使用 QT 设计器创建的新插槽的代码在哪里?

Posted

技术标签:

【中文标题】使用 QT 设计器创建的新插槽的代码在哪里?【英文标题】:Where does the code for a new slot created using QT designer go? 【发布时间】:2010-12-01 12:37:47 【问题描述】:

我是 QT 的新手。

我在 Visual Studio 2008 上使用 qt 4.7.1。

我正在尝试实现一个全部被图像覆盖的按钮,当按下时,图像会发生变化。 (图像按钮) 我正在尝试使用 QT 设计器将按钮置于正确的布局中,然后以编程方式处理按下的事件(..signal..)以更改按钮上的图标。

创建新的主窗口。在里面放一个工具按钮。 切换到插槽和信号模式。在窗口上创建了一个从按钮pressed() 到新slot1() 的信号槽。 现在我把 slot1() 的代码放在哪里?

【问题讨论】:

【参考方案1】:

对不起我的英语。这很糟糕,但我会尽力帮助你。

您必须使用继承方法。所以: • 您创建了一个表单,在该表单上添加了与 slot1() 的连接。 • 在项目中包含您的表单,编译它。将生成一个名为 ui_FormName.h 的文件。在该文件的底部,您会找到如下代码:namespace Ui class MainWindow: public Ui_MainWindow ; // namespace Ui

你必须: 1) 创建一个新类,继承自类QMainWindow。 2) 在包含生成的 h 文件的头文件中,添加类型为 Ui::MainWindow 的成员,该成员在生成的 .h 文件中声明(例如:Ui::MainWindow* m_puiTmp;)。 3) 同时添加代码:public slots: // or private slots:, or protected slots: ... Whatever. void slot1();

然后为您的新类中的函数创建实现。不要忘记添加 m_puiTmp->setupUi( this ); 在您的构造函数中,然后为您的 slot1() 插槽创建实现。

您还可以在派生类中描述您的槽和信号,然后将它们与 QtDesigner 中的信号和槽连接起来。只需在设计器中添加 now 插槽或信号时,根据您在代码中设置的名称重命名它们。

希望这会对您有所帮助。如果您不能解决您的问题,请给我留言。我会尽力帮忙的。

【讨论】:

真正令人困惑的是设计师没有显示您定义的插槽。如果您定义了一个插槽“mySlot”,则必须手动将其添加到设计人员的“插槽和信号模式”列表中。 这是真的。有点傻,但实现起来很难

以上是关于使用 QT 设计器创建的新插槽的代码在哪里?的主要内容,如果未能解决你的问题,请参考以下文章

在 qt 设计器中所做的更改对应的代码在哪里?

Qt Pushbutton无法连接插槽

QT4 设计器在信号/槽编辑器中不接受“&”引用和“”空格字符

Qt:如何将类连接到自定义 Qt 设计器小部件

无法运行Qt设计器编译的python代码[重复]

Qt 设计器 - Qt 4.8.1