🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 8.9 问题与解答 问:我用的是 Qt Designer,会自动加上 statusbar,如何把它去掉呢? 答:如图 8-31 所示,可以在对象查看器(Object Inspector)中点击鼠标右键,然后 把它删掉。 ![](https://box.kancloud.cn/2016-01-22_56a1a1558fc81.png) 图 8-31 在对象查看器中删除状态栏 对象查看器(Object Inspector)是很有用的一个部件工具,可以索引窗口部件。 问:在 Qt4 中如何创建有最大最小化的 MainWindow? 怎么新创建的 MainWindow 就只有一个关闭按钮,没有最大最小化呢,而且拖边框放大缩 小也不可以,只能在右下那个角拖. 答:用 setWindowFlags()方法设置。在 Qt Demos 里面有一个例子是演示 setWindowFlags 里各种选项的效果的。 你的问题可以使用下面的语句: ``` setWindowFlags(windowFlags() & ~Qt::WindowMinMaxButtonsHint); ``` 问:怎样去掉 MainWindow 最大化和最小化按钮? 答:这个问题与前一个类似,用 setWindowFlags()方法设置。 ``` setWindowFlags(Qt::CustomizeWindowHint ); //这样应该能够达到你的需要 main_window* window = new main_window(this,0,FALSE,WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu); ``` 也可以这样写: 或者在构造函数中加上这两句: ``` setWindowFlags(Qt::Dialog); //窗体没有最大化最小化按钮 setFixedSize(250, 100); //设置窗体的大小 ``` 问:MainWindow 窗口如何固定? 项目要求将 MainWindow 窗口的标题栏屏蔽。就是只响应它的关闭按钮,对于最大化和 最小化都不响应,而且也不能被鼠标拖动, 请问有没有什么好的办法。 答:以下代码可以达到效果,可以看做是前面几个问题的综合示例: ``` #include <QtGui> #include <QtCore> int main(int argc, char **argv) { QApplication app(argc, argv); QMainWindow window; window.setWindowFlags(window.windowFlags() & ~Qt::WindowMaximizeButtonHint & ~Qt::WindowMinimizeButtonHint ); int titleBarHeight = QApplication::style()->pixelMetric(QStyle::PM_TitleBarHeight); QRect rect = QApplication::desktop()->availableGeometry(); rect.setTop(rect.top() + titleBarHeight); window.setGeometry(rect); window.setFixedSize(window.size()); window.showMaximized(); return app.exec(); } ``` style()、setGeometry()、setFixedSize()方法在涉及到界面布局时经常会用到,用 法比较简单,可以查阅 Qt Assistant。 问:在 Qt Designer 中设计 Main Window 程序的问题 我在 Main Window 里放置了一个 TextEdit,被自动设为 centralWidget。可是在程序 执行的时候,该 TextEdit 不能充满整个程序界面,请问如何解决? 答:你对中心部件(Central Widget)的认识是存在误区的。那个 TextEdit 是不会被 自动设置为中心部件的。如果使用 Qt Designer 的话,你要添加一个布局管理器, 然后设 置主窗口的中心部件,其实和手写代码是一样的。