Qt - 如何覆盖小部件?
Posted
技术标签:
【中文标题】Qt - 如何覆盖小部件?【英文标题】:Qt - How to override a widget? 【发布时间】: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
。
我该怎么做?
【问题讨论】:
【参考方案1】: 右键单击设计器中的按钮并选择“Promote To...” 在升级类名称下输入“FavouriteMenu” 在 Header File 下输入 .h 文件的文件名 点击“添加” 点击“推广”【讨论】:
我这样做了,但旧按钮仍然长矛并且比这更奇怪 - 我什至从设计器中删除了按钮并重新编译它仍然存在...... 无论我在设计器中进行什么更改并重新编译,我都会得到相同的 gui 确保重建所有中间文件 除了“全部清理”和“全部重建”之外我能做的任何事情? 不知道你使用的是什么开发环境我们不知道,但是.ui文件被转换成代码,testwindow.ui转换成ui_testwindow.[h|cpp] iirc,你应该看到变化您在这些文件中指定,即声明QToolButton *yourbuttonName
应该是 FavouriteMenu *yourbuttonName
并且带有收藏菜单的 .h 文件应该在包含列表中。如果这些不正确,则 .ui 文件尚未刷新,或者您没有保存更改以上是关于Qt - 如何覆盖小部件?的主要内容,如果未能解决你的问题,请参考以下文章