有这样一个程序:#include <QtGui/QApplication> #include <qtextcodech>#include <QtGui/QDialog>#include <QtCore/QTimer>#include "widgeth"int main(int argc, char argv[]){ QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312")); QApplication a(argc, argv); QDialog dialog; dialogsetStyleSheet(QString::fromUtf8("background-image: url(:/images/1PNG);/n" "color: rgb(0, 255, 0);/n" "font: 75 16pt /"/345/256/213/344/275/223/";")); dialogsetGeometry(QRect(50, 50, 350, 250)); //可设置窗口显示的方位与大小 dialogsetWindowFlags(Qt::FramelessWindowHint); //也是去掉标题栏的语句 Widget w; QTimer timer; QObject::connect(&timer, SIGNAL(timeout()), &w, SLOT(showNormal())); QObject::connect(&timer, SIGNAL(timeout()), &dialog, SLOT(accept())); timerstart(5000); dialogexec(); wshowNormal(); // 1、可更改的地方。 return aexec();} Widget::Widget(QWidget parent) : QWidget(parent){ QMessageBox::StandardButton message; QApplication::setStyle(QStyleFactory::create("plastique")); QApplication::setPalette(QApplication::style()->standardPalette()); uisetupUi(this); connect(uipushButton, SIGNAL(clicked()), this, SLOT(mountMessage())); connect(uipushButton_2, SIGNAL(clicked()), this, SLOT(umountMessage())); connect(uipushButton_3, SIGNAL(clicked()), this, SLOT(saveMessage())); connect(uipushButton_5, SIGNAL(clicked()), this, SLOT(adjustMessage())); connect(uipushButton_7, SIGNAL(clicked()), this, SLOT(about_usMessage())); connect(uipushButton_4, SIGNAL(clicked()), this, SLOT(stop_saveMessage())); connect(uipushButton_6, SIGNAL(clicked()), this, SLOT(touchMessage())); connect(uipushButton_8, SIGNAL(clicked()), this, SLOT(exitMessage())); mount_u(); //挂载U盘成功! if( !have_video() ) { //if have WebCam message = QMessageBox::information(this, tr("摄像头未连接"), tr("摄像头未连接,请连接摄像头。") ); } setWindowFlags(Qt::FramelessWindowHint); /2、可更改的地方 setWindowTitle(tr("欢迎使用迷你监控器!"));} 程序中更改两处显示主窗口的样式。
在创建Qt Gui Application时,总会让你选择在QWidget,QMainWindow和QDialog中选择一个Base Class。
这三个类具体有什么区别呢?在Qt的手册和网上找了一些资料。
先看官方的手册:
QWidget Class Reference
The QWidget class is the base class of all user interface objects
Inherits: QObject and QPaintDevice
Inherited by: ……, QDialog, ……,QMainWindow, ……
QDialog Class Reference
The QDialog class is the base class of dialog windows
Inherits: QWidget
QMainWindow Class Reference
The QMainWindow class provides a main application window
Inherits: QWidget
可以看到QMainWindow和QDialog都是继承自QWidget。再看看下面那段从网上转过来的介绍,大概就能了解三者之间的区别了。
QWidget类是所有用户界面对象的基类。 窗口部件是用户界面的一个原子:它从窗口系统接收鼠标、键盘和其它事件,并且在屏幕上绘制自己的表现。每一个窗口部件都是矩形,并且它们按Z轴顺序排列的。一个窗口部件可以被它的父窗口部件或者它前面的窗口部件盖住一部分。
QMainWindow 类提供一个有菜单条、锚接窗口(例如工具条)和一个状态条的主应用程序窗口。主窗口通常用在提供一个大的中央窗口部件(例如文本编辑或者绘制画布)以及周围菜单、工具条和一个状态条。QMainWindow常常被继承,因为这使得封装中央部件、菜单和工具条以及窗口状态变得更容易。继承使创建当用户点击菜单项或者工具条按钮时被调用的槽成为可能。你也可以使用Qt设计器来创建主窗口。
QDialog类是对话框窗口的基类。对话框窗口是主要用于短期任务以及和用户进行简要通讯的顶级窗口。QDialog可以是模式的也可以是非模式的。QDialog支持扩展性并且可以提供返回值。它们可以有默认按钮。QDialog也可以有一个QSizeGrip在它的右下角,使用setSizeGripEnabled()。
QDialog 是最普通的顶级窗口。不被嵌入到一个父窗口部件的窗口部件被叫做顶级窗口部件。通常情况下,顶级窗口部件是有框架和标题栏的窗口(尽管如果使用了一定的窗口部件标记,创建顶级窗口部件时也可能没有这些装饰。)在Qt中,QMainWindow和和不同的QDialog的子类是最普通的顶级窗口。
如果是顶级对话框,那就基于QDialog创建,如果是主窗体,那就基于QMainWindow,如果不确定,或者有可能作为顶级窗体,或有可能嵌入到其他窗体中,则基于QWidget创建。当然了,实际中,你还可以基于任何其他部件类来派生。看实际需求了,比如QFrame、QStackedWidget等等。
以上就是关于qt中如何去掉主窗口标题栏全部的内容,包括:qt中如何去掉主窗口标题栏、总结QMainWindow、QWidget、QDialog的区别、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)