【问题标题】:Qt - How to override a widget?Qt - 如何覆盖小部件?
【发布时间】:2011-01-06 13:11:56
【问题描述】:

我使用 Qt 设计器创建了一个包含 QToolButton 的表单。
我可以使用 ui->favouriteToolButton 来打开它。
我使用了设计器,因为它比编写所有 gui 代码要简单得多。

问题是专门针对这个ToolButton 我想通过创建自己的类来编码:

class FavouriteMenu : public QToolButton
{
    Q_OBJECT

public:
    explicit FavouriteMenu(QWidget *parent = 0);
    //~FavouriteMenu();

private:
    QMenu *menu;                                        //MENU
    QAction *addToBookmarkAct;
    QAction *editBookmarkAct;

...

我希望能够用 FavouriteMenu 的新实例覆盖 ui->favouriteToolButton。 我该怎么做?

【问题讨论】:

    标签: c++ qt qt-designer qtgui


    【解决方案1】:
    • 右键单击设计器中的按钮并选择“Promote To...”
    • 在升级类名称下输入“FavouriteMenu”
    • 在 Header File 下输入 .h 文件的文件名
    • 点击“添加”
    • 点击“推广”

    【讨论】:

    • 我这样做了,但旧按钮仍然长矛并且比这更奇怪 - 我什至从设计器中删除了按钮并重新编译它仍然存在......
    • 无论我在设计器中进行什么更改并重新编译,我都会得到相同的 gui
    • 确保重建所有中间文件
    • 除了“全部清理”和“全部重建”之外我能做的任何事情?
    • 不知道你使用的是什么开发环境我们不知道,但是.ui文件被转换成代码,testwindow.ui转换成ui_testwindow.[h|cpp] iirc,你应该看到变化您在这些文件中指定,即声明 QToolButton *yourbuttonName 应该是 FavouriteMenu *yourbuttonName 并且带有收藏菜单的 .h 文件应该在包含列表中。如果这些不正确,则 .ui 文件尚未刷新,或者您没有保存更改
    猜你喜欢
    • 2010-12-09
    • 2019-03-12
    • 1970-01-01
    • 2017-08-22
    • 2021-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-19
    相关资源
    最近更新 更多