簡體   English   中英

在Qt中將多個小部件合並為一個小部件

[英]Combine multiple widgets into one in Qt

我在一個項目中反復使用一對QComboBoxQListWidget 他們的交互是高度耦合的 - 當在組合框中選擇項目時,列表以某種方式被過濾。 我在多個對話框實現中復制粘貼這兩個小部件之間的所有信號和插槽連接,我認為這不是一個好主意。

是否可以創建一個自定義小部件,它將保存這兩個小部件,並將所有信號和插槽連接在一個地方? 如下所示:

class CustomWidget
{
    QComboBox combo;
    QListWidget list;

    ...
};

我想將此小部件用作單個小部件。

通常的方法是子類QWidget (或QFrame )。

class CustomWidget: public QWidget {
 Q_OBJECT

 CustomWidget(QWidget *parent)
  : QWidget(parent) {
    combo = new QComboBox(...);
    list  = new QListWidget(...);
    // create the appropriate layout
    // add the widgets to it
    setLayout(layout);
 }

 private:
  QComboBox *combo;
  QListWidget *list;

};

處理該自定義小部件中列表和組合之間的所有交互(通過將適當的信號連接到適當的插槽,可能為此定義您自己的插槽)。

然后,您通過專用信號和插槽公開自定義窗口小部件的行為/ API,可能模仿列表和/或組合中的那些。

地址簿教程將指導您完成所有這些工作,包括創建自定義窗口小部件以及為其定義信號和插槽。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM