gpt4 book ai didi

c++ - 在 Qt 中将多个小部件合并为一个

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:05:36 26 4
gpt4 key购买 nike

我在项目中重复使用一对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,可能会模仿列表和/或组合中的信号和插槽。

Address book教程将带您完成所有这些,包括创建自定义小部件并为其定义信号和槽。

关于c++ - 在 Qt 中将多个小部件合并为一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8366617/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com