QT中修改程序主窗口标题用什么函数?

作者&投稿:守哀 (若有异议请与网页底部的电邮联系)
QT中修改程序主窗口标题用什么函数~

使用QT编辑界面,其中带来很大方便的一点就是Qt中自带丰富的、种类齐全的类及其功能函数,程序员可以在编辑程序的过程中简单地直接调用。关于窗口关闭的操作,在这里指出常用的三个槽,即quit(),exit()以及close()。
首先说明窗口退出时,系统提示对话框的代码编辑。对主程序的退出,可以调用成员函数exit(),同时也可以调用槽quit(),二者此时都能起到关闭应用程序的作用。只是应注意二者调用的方式不同。如下程序示例:
{
QApplication* app;
app->exit(0);
}
或者:
{
QApplication* app;
app->quit();
}
此时二者是等价的,即void QApplication::quit ()等价于函数调用 QApplication::exit( 0 )。此时,若需要给出用户提示,则只需要在程序当中添加QMessageBox的消息判断语句,以提示用户是否确定退出应用程序。另外,quit()作为槽,也可以连接信号和槽的形式,响应某个信号后关闭应用程序。如:
QPushButton *quitButton = new QPushButton( "Quit" );
connect( quitButton, SIGNAL(clicked()), qApp, SLOT(quit()) );
如果关闭的不是应用程序,而是关闭窗口等部件的形式,则必须调用close()函数,已关闭部件。如下:
if (!(QMessageBox::information(this,tr("CT Control View"),tr("Do you really want to log out CT Control View?"),tr("Yes"),tr("No"))))
{
this->close();
}
其中通过一条if语句,判断条件为一个对话框,根据用户的选择做出是否关闭该部件,this在这里代表当前窗口部件对象的地址。当用户选择“Yes”时,该窗口部件退出;反之则取消退出操作。
至此,我们已经简单了解了应用程序和窗口等部件的退出或关闭的代码编辑。然而,如果用户点击窗口右上角的X按键时,你会发现窗口仍然会在不给出任何提示的情况下直接退出了,即便你在程序当中已添加了提示的对话框语句。那为什么此时的关闭操作没有按我们希望的那样先给出提示对话框呢?原因是此时的关闭操作并没有引起调用带有提示消息的关闭或退出语句。当用户点击X关闭窗口时,系统会自动将这个事件告之某个特定的函数,即void QWidget::closeEvent ( QCloseEvent * e ),因此,这种情况应特别注意。在关闭窗口前,可先定义一条消息语句,以提示用户是否确定关闭窗口。如:
void mainWindow::closeEvent( QCloseEvent * event )
{
switch( QMessageBox::information( this, tr("CT Control View"),
tr("Do you really want to log out CT Control View?"),
tr("Yes"), tr("No"),
0, 1 ) )
{
case 0:
event->accept();
break;
case 1:
default:
event->ignore();
break;
}
}
编译程序后,系统会在用户响应close操作时,自动调用该语句。也许这个时候你还会问,上面的那个功能函数究竟是把它定义成槽呢,还是定义成成员函数。答案是二者都可以。一方面槽本身就是一个特殊的成员函数,除了能与信号连接之外,其功能与函数无异。另一方面,此时不需要额外设置连接信号和槽,添加该功能函数之后,窗口一旦有了close操作,机会立即响应该。
尽管添加closeEvent( QCloseEvent * event )这一功能函数之后,窗口会在关闭时给出提示对话框。但有时候还会发生这样一种情况:在点击确认关闭后,还会再会出现一个对话框,即提示对话框会出现两次。那这又是什么原因呢?其实很简单,那是因为closeEvent( QCloseEvent * event )只会响应close的操作,出现两次对话框无疑是在自定义的关闭函数中又添加一条提示对话框语句,确认关闭后,响应close操作,这时系统又会马上调用closeEvent( QCloseEvent * event )这个函数。因此,解决的办法是只定义一个带提示对话框的关闭函数,对不同的关闭操作都相应closeEvent( QCloseEvent * event )这个函数即可。
最后,如果想要在关闭主窗口或主程序时,所有打开的独立的子窗口都能同时被关闭。那么这个时候一般是在main.cpp文件中连接信号void QApplication::lastWindowClosed ();关于lastWindowClosed()的详细介绍,这里不作说明,需要使用时可以使用Qt Assistant查看其使用发法。如:
int main( int argc, char ** argv )
{
QApplication a( argc, argv );
ABMainWindow *mw = new ABMainWindow();
mw->setCaption( "Qt Example - Addressbook" );
a.setMainWidget( mw );
mw->show();
a.connect( &a, SIGNAL( lastWindowClosed() ), &a, SLOT( quit() ) );
int result = a.exec();
delete mw;
return result;
}
这样,系统会在关闭主窗口部件时,同时关闭打开的其它子窗口程序。比较值得说明的是,并不是使用了a.connect( &a, SIGNAL( lastWindowClosed() ), &a, SLOT( quit() ) )这条语句后就一定能实现该功能。在此之前,必须特别注意是否设定了主窗口部件,即调用setMainWidget这一功能函数,这样,当关闭这一主窗口部件时,才会响应关闭这一时刻已打开的其它子窗口部件。

调用窗体类的setWindowTitle()函数可以对窗体设置标题。
窗体类继承于QWidget类,其setWindowTitle函数原型:
void QWidget::setWindowTitle(const QString & title); //title是标题内容字符串。
示例:
MyWidget.setWindowTitle(QString("我的窗体标题"));

函数调用 QApplication::exit( 0 )。此时,若需要给出用户提示,则只需要在程序当中添加QMessageBox的消息判断语句,以提示用户是否确定退出应用程序。



qt自定义标题栏怎样继承到窗体中
答:在qt中实现自定义标题栏继承到窗体中,通过以下步骤进行操作:1、创建一个新的窗体类,并确保它继承自QWidget、QMainWindow或QDialog等适当的基类。2、在该窗体类的头文件中定义一个新的QWidget派生类作为自定义标题栏。例如,可以创建一个名为CustomTitleBar的类。3、CustomTitleBar类中重写绘制事件(...

如何使用Qt将PushButton改为圆形标题?
答:本文将介绍如何使用Qt中QPushButton的样式表功能将按钮的形状从常见的方形改变为圆形,并将按钮内容作为标题呈现。步骤 以下是将PushButton转换成圆形标题的步骤:1.创建QPushButton 在Qt Creator中创建一个新的Qt Widgets应用程序。将QWidget(Form)拖动到代码编辑器中并命名为Btncircle。在QWidget窗口中...

如何设置qt对话框标题字体
答:先选择所要设置的字,点击“格式”菜单下的“单元格”,在出现的“单元格格式”对话框中选择“字体”项进行设置。也可选中所要设置的字后点击鼠标右键,选择设置“单元格格式”在出现的对话框中进行设置。

qtdialog标题栏颜色
答:1.如果你用的是系统的标题栏,用Qt是没法修改标题栏的颜色的,必须用到对应操作系统相关的API。2.如果是自定义的标题栏,直接用QSS样式的background-color:red设置即可

在Qt中如何设置Windows应用程序的图标和窗口图标
答:设置windows窗口图标的方法:this->(QIcon("myapp.png"));设置应用程序的方法:1、在你的工程目录创建一个txt文档,写入:IDI_ICON1ICON"app.ico"2、重命名改文件为*.rc.,比如app.rc 3、在工程*.pro中添加如下代码 RC_FILE=app.rc 4、拷贝一张ico的图片至工程目录,命名为app.ico,编译即可...

怎么改变Qt界面文字的颜色 字体样式
答:Qt改变界面文字有很多方法(下面以Label控件为例):1.通过Qt Creater:拖一个Label到窗体上,对着Label右键->改变多信息文本...,里面就可以修改Label的内容、颜色、字体样式等等。2.通过代码:QLabel *label = new QLabel("Hello World!"); //新建一个显示"Hello World"的Label//使用setPalette()...

如何在QT中实现自己的标题栏
答:有时候我们觉得QMainWindow的标题栏不太适合我们的程序要求,而想设计自己的标题栏。这时在构造QMainWindow的时候我们可以设置标记为Qt::FramelessWindowHint,这时我们将得到一个无标题栏的窗口。但是问题也随之而来:我们无法移动这个窗口(有标题栏的时候我们可以通过点击标题栏实现窗口的拖曳)。这时我们可以...

QT修改mainwindow前的图标,在资源管理器上显示图标也改变
答:新建一个my.txt文件,打开后在其中加一句 “IDI_ICON1 ICON DISCARDABLE "应用程序图标.ico"”。(“应用程序图标.ico”是要添加的图片名,图片格式一定要是.ico),然后保存并退出,将文件格式改为qtdemo.rc,将图片和修改格式后的文件一起放入项目。创建完文件后会自动打开该资源文件,这里需要先在...

qt creator 中tab widget 怎么改pag名字
答:你可以选择在添加tab的时候设置:int QTabWidget::addTab(QWidget * page, const QString & label)也可以在添加之后再修改:void QTabWidget::setTabText(int index, const QString & label) 如果你说的是在Qt creator中的界面编辑器里面改的话,选中tabwidget,在属性栏里面找到currentTabText,...

qt里面怎么设置窗口大小改变不触发update
答:主界面的LayoutSizeConstraint设成SetFixedSize 或者把SizePolicy设成Fixed先把WindowsFlag设为FrameLessWindow,即无边框窗口。否则边框由系统绘制,Qt本身是无法做出修改的。不过这样的话,若要提供边框拖动缩放、标题栏等,需要自行绘制,Qt提供了QToolButton来实现标题栏按钮,用QRubberBand实现拖动的虚线框。