2

所以我尝试使用 QTDesigner 和 C++ 构建一个模型视图窗口。

出于这个原因,我创建了一个 QOBject 派生类作为我的模型。它提供插槽和信号来访问它,例如:setFileName(QString) 或 fileNameChanged(QString)。

我开始在 QTDesigner 中使用信号拖放,发现它非常像 VA-Smalltalk-Like。过了一会儿,我想知道我是否也可以将我的模型连接到这个。那么是否有可能以某种方式将我的模型对象引入 Window/GUI 并让 QTDesigner 将模型对象的信号和插槽连接到 GUI。

本质上:为我写:

connect( model, SIGNAL(fileNameChanged(QString)), ui->labelFn, SLOT(setText(QString)))
connect( ui-textEdit2, SIGNAL(textChanged(QString)), model, SLOT(setFileName(QString)))

感谢您的解释

4

3 回答 3

1

正如 jopa 所说,如果您想在 Designer 中执行此操作,则需要让 Designer 了解您的组件,这可能只有在您经常重用的情况下才值得。恕我直言,Designer 非常适合制作原型或创建初始 UI 设计,但不适合长期维护。尽管 Designer 非常强大,但仍有许多选项未通过界面公开。

我建议研究 Qt 的自动连接功能。它试图纯粹通过插槽命名约定来建立连接。在这里阅读更多。我一直渴望尝试这个,但我们才刚刚进入我们的 Qt 4 转换项目,我还没有机会。

于 2010-06-17T03:22:46.477 回答
0

将新类型的对象引入 Designer 的唯一方法是通过插件,但这仅适用于小部件,通过QDesignerCustomWidgetCollectionInterface. 如果 Designer 允许像 Apple 的 Interface Builder 允许的那样连接到其他对象,那就太好了,但这是不可能的。现在,我们在表单的构造函数中连接这些信号。

于 2010-06-17T02:14:46.940 回答
0

我从不使用 Qt Creator 的信号和插槽编辑器,我总是使用 connect。将所有信号和插槽连接放在一个位置要容易得多,如果它们考虑正在使用的库(例如来自 QIODevice 的 readyRead())或 GUI(例如 indexChanged(int)),则它们是独立的。

这使代码更具可读性 + 我在使用信号和插槽编辑器时遇到了很多麻烦。

于 2011-09-23T12:12:08.380 回答