我反复使用一对QComboBox
and QListWidget
在一个项目中。它们的交互是高度耦合的 - 当在组合框中选择一个项目时,列表会以某种方式进行过滤。我在多个对话框实现中复制粘贴这两个小部件之间的所有信号和插槽连接,我认为这不是一个好主意。
是否可以创建一个自定义小部件,它将容纳这两个小部件并将所有信号和槽连接集中在一处?类似如下:
class CustomWidget
{
QComboBox combo;
QListWidget list;
...
};
我想将此小部件用作单个小部件。
通常的方法是子类化QWidget
(or 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,可能会模仿列表和/或组合中的信号和槽。
The 地址簿 http://doc.qt.io/qt-5/tutorials-addressbook.html教程将引导您完成所有这些,包括创建自定义小部件并为其定义信号和槽。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)