Qt覆盖标题栏和菜单栏?

时间:2011-09-16 18:06:42

标签: c++ qt menubar titlebar

我开始了一个我一直在计划的项目,我有一个简单的问题。

我想拥有尽可能多的屏幕空间。要做到这一点,我需要使标题栏更薄,我也想让菜单栏隐藏,直到它悬停。

是否有一个功能可以快速缩小标题栏。

我很确定我需要使用setMenuWidget()来创建自定义菜单栏,然后​​只需添加标签,信号和其他有趣的菜单内容。我是对的,setMenuWidget()是否需要在设置所有标签和连接的功能旁边?我是否必须在类中创建一个变量,或者我可以创建一个名为setUpMenuBar()的函数吗?

我试着尽可能地说出这个。有时我的问题有点模糊,所以如果你清楚,就问问。

谢谢!

2 个答案:

答案 0 :(得分:0)

使用full screen mode删除标题栏。我认为这比非标准的薄标题栏更加用户友好。

答案 1 :(得分:0)

您是否需要自定义菜单栏小部件的成员变量仅取决于您对它的使用。如果您只是创建菜单,那么不,您不需要为其保留成员变量。 “QMainWindow获取menuBar指针的所有权并在适当的时候删除它。”

MyMainWindow::setUpMenuBar() {
    MyCustomMenuBar * menubar = new MyCustomMenuBar;
    // add all the menus
    setMenuWidget( menubar );
}  

您甚至可以在以后检索指向菜单栏的指针:

MyCustomMenuBar * menubar = qobject_cast<MyCustomMenuBar *>( menuWidget() );

如果您需要更频繁地使用此指针,您可以覆盖MyMainWindow :: menuWidget()或将指针保存为成员。