现在的位置: 首页 > 综合 > 正文

使用Qt 4创建主窗口应用程序的问与答-来自《零基础学Qt 4编程》第8章

2013年01月03日 ⁄ 综合 ⁄ 共 1503字 ⁄ 字号 评论关闭

问: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的话,你要添加一个布局管理器,然后设置主窗口的中心部件,其实和手写代码是一样的。

抱歉!评论已关闭.