所以我尝试使用QTDesigner和C ++构建一个Model-View窗口。
因此我创建了一个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)))
感谢您的解释
答案 0 :(得分:1)
正如jopa所说,如果你想在Designer中这样做,你需要让Designer知道你的组件,如果它是你经常重复使用的东西,这可能是值得的。恕我直言,设计师非常适合原型设计或创建初始UI设计,但不适合长期维护。虽然Designer非常强大,但是有许多选项没有通过界面公开。
我建议调查Qt的自动连接功能。它试图完全通过槽命名约定进行连接。阅读更多here。我一直渴望尝试这一点,但我们只是进入我们的Qt 4转换项目,我还没有机会。
答案 1 :(得分:0)
将新类型的对象引入Designer的唯一方法是通过插件,但这仅适用于小部件,通过QDesignerCustomWidgetCollectionInterface
。如果Designer允许像Apple的Interface Builder允许的那样允许连接到其他对象,那将是很好的,但这是不可能的。现在,我们将在表单的构造函数中连接这些信号。
答案 2 :(得分:0)
我从不使用Qt Creator的信号和插槽编辑器,我总是使用连接。在一个地方拥有所有信号和插槽连接要容易得多,如果他们认为正在使用的库(例如来自QIODevice的readyRead())或GUI(例如,indexChanged(int))则更加容易。
这使代码更具可读性+我在信号和插槽编辑器方面遇到了很多麻烦。