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

我是 QT 的新手。

我在 Visual Studio 2008 上使用 qt 4.7.1。

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

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

【问题讨论】:

    标签: qt-designer


    【解决方案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”,则必须手动将其添加到设计人员的“插槽和信号模式”列表中。
    • 这是真的。有点傻,但实现起来很难
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-02
    • 2016-04-11
    • 1970-01-01
    • 2016-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多