使用 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 设计器创建的新插槽的代码在哪里?的主要内容,如果未能解决你的问题,请参考以下文章