Ich versuche, eine Unterklasse von QTableView
, die eine eingebettete QLineEdit
an der Spitze zum Filtern der Ergebnisse as-you-type zu machen. Ich brauche meine Tabelle, um die gleiche API wie ein normales QTableView
zu haben, also möchte ich es subclassing subclassing QWidget
subklassifizieren und ein QLineEdit
und QTableView
dazu hinzufügen.Wie wird ein Widget abgeleitet, um weitere Elemente hinzuzufügen?
Ich dachte, ich könnte nur neu implementieren paintEvent(QPaintEvent*)
, verändern die QPaintEvent
‚s rect()
etwas niedriger zu starten (die Höhe eines QLineEdit
, so zieht es unter ihm) und dann durch zu QTableView::paintEvent()
passieren, aber das QPaintEvent
Argument bestimmt nur, welche Region neu gezeichnet werden muss, nicht die Region, in der das Widget gemalt werden soll.
Warum sind Sie dagegen, ein kombiniertes Widget zu erstellen und den "harten" Weg zu gehen? –
Weil dann der Code so aussieht: public: void setModel (QAbstractItemModel * m) {table-> setModel (m); } QWidget * horizontalHeader() {return table-> horizontalHeader(); } QWidget * verticalHeader() {return table-> verticalHeader(); } [snip] Alle Signale, die QTableView ausstrahlt, enden auf die gleiche Weise: Ich müsste sie alle auf die externe Schnittstelle meines Widgets abbilden. –
oder Sie könnten einfach ein Getter für das QTableView * von Ihrem Widget machen. :) –