Я пытаюсь переписать некоторый код PyQt C++ в python. Я делал это преобразование синтаксиса много раз, но не с таким примером подкласса, как этот. Этот код C++ предназначен для того, чтобы вы могли добавлять comboboxes в заголовок QTableWidget, чтобы действовать аналогично фильтрам заголовков Excel. Я могу преобразовать большую часть логики, но мне нужна помощь с синтаксисом подкласса в python для этого примера. Любая помощь приветствуется.Qt Преобразование синтаксиса из C++ в PyQt
MyHorizontalHeader(QWidget *parent = 0) : QHeaderView(Qt::Horizontal, parent)
{
connect(this, SIGNAL(sectionResized(int, int, int)), this,
SLOT(handleSectionResized(int)));
connect(this, SIGNAL(sectionMoved(int, int, int)), this,
SLOT(handleSectionMoved(int, int, int)));
setMovable(true);
}
void showEvent(QShowEvent *e)
{
for (int i=0;i<count();i++) {
if (!boxes[i]) {
QComboBox *box = new QComboBox(this);
boxes[i] = box;
}
boxes[i]->setGeometry(sectionViewportPosition(i), 0,
sectionSize(i) - 5, height());
boxes[i]->show();
}
QHeaderView::showEvent(e);
}
void handleSectionResized(int i)
{
for (int j=visualIndex(i);j<count();j++) {
int logical = logicalIndex(j);
boxes[logical]->setGeometry(sectionViewportPosition(logical), 0,
sectionSize(logical) - 5, height());
}
}
void handleSectionMoved(int logical, int oldVisualIndex, int newVisualIndex)
{
for (int i=qMin(oldVisualIndex, newVisualIndex);i<count();i++){
int logical = logicalIndex(i);
boxes[logical]->setGeometry(sectionViewportPosition(logical), 0,
sectionSize(logical) - 5, height());
}
}
void scrollContentsBy(int dx, int dy)
{
QTableWidget::scrollContentsBy(dx, dy);
if (dx != 0)
horizHeader->fixComboPositions();
}
void fixComboPositions()
{
for (int i=0;i<count();i++)
boxes[i]->setGeometry(sectionViewportPosition(i), 0,
sectionSize(i) - 5, height());
}
Этот пример исходный код родом из http://blog.qt.io/blog/2012/09/28/qt-support-weekly-27-widgets-on-a-header/
Я надеюсь, что в конечном итоге создать пользовательский подкласс, который я могу содействовать мой QTableWidgets в «Qt Designer», в результате чего я могу иметь собственный QTableWidget QHeaderView с COMBOBOX фильтрами ,
Можете ли вы портировать все, что вы * делаете, понять сначала, так что вам легче увидеть, с какими конкретными частями вы сталкиваетесь с problerms? – ekhumoro
Это строка, с которой у меня возникают проблемы ... MyHorizontalHeader (QWidget * parent = 0): QHeaderView (Qt :: Horizontal, parent) – panofish