Qt窗口的一些简单设置-标题、图标、最大化最小化按钮、任务栏图标

1.更改窗体标题

[cpp]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. this->setWindowTitle("窗体标题");  

“窗体标题”就是更改的窗体标题

2.控制窗体大小

[cpp]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. this->setMaximumSize(300,300);  //窗体最大尺寸  
  2. this->setMinimumSize(300,300);  //窗体最小尺寸  
  3. this->setMinimumHeight(300);    //单独设置窗体高的最小值  
  4. this->setMaximumWidth(300);     //单独设置窗体宽的最小值  


也可以通过窗体布局控制窗体大小

[cpp]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. QGridLayout *mainLayout = new QGridLayout;                  //窗体中控件为网格布局  
  2. mainLayout->setSizeConstraint(QLayout::SetFixedSize);       //布局大小不变  


在构造函数中的这个函数强制设置窗体的布局为固定大小,用户不可自行调整对话框大小。布局管理器将会负责调整大小的任务,当一些子窗口期间显示或隐藏的时候自动的调整对话框的大小,以保证对话框总是以优化了的大小显示。

在官方文档中setSizeConstraint给的解释为:sizeConstraint:SizeConstraint.  This property holds the resize mode of the layout.

这个函数主要是通过布局管理器对布局大小进行限制,与上面介绍的窗体大小有所不同。

函数SetFixedSize如下:

[cpp]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. void QWidget::setFixedSize(const QSize &s);  

设置控件的最大和最小尺寸为s,防止控件大小的变化。

3.更改窗体图标

首先在项目右键-->添加新文件,弹出如下对话框


在左侧选中Qt,右侧选择Qt Resource File,然后Choose,页面如下:


如果路径没错的话就自己命一个名字例如:icon,然后下一步,一路next知道完成。这时候在工程文件目录下多出一个后缀为.qrc的文件,打开,如下:


然后在右侧点击添加->添加前缀,然后->添加文件,选择准备好的ICO图片,图片可以去矢量图库搜索下载,这里选用32*32的彩色图标,添加完图标后给图标起一个别名,容易被记忆的,写代码的时候可以直接用别名代替图片名称,如下:


这时候窗体图标就已经准备好了,下面开始编写代码,在mainwindows.cpp文件中

[cpp]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. this->setWindowTitle("calculator");                     //设置窗体标题  
  2. this->setMaximumSize(300,400);                          //窗体最大尺寸  
  3. this->setMinimumSize(300,400);                          //窗体最小尺寸  
  4. this->setWindowIcon(QIcon(":/new/prefix1/icon"));       //窗体图标  


运行看一下图标已经改了。


4.去掉标题栏中最大化最小化按钮

[cpp]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. //关闭按钮失效  
  2. this->setWindowFlags(Qt::WindowMinMaxButtonsHint);  
  3. //去掉最大化最小化按钮,保留关闭按钮  
  4. this->setWindowFlags(Qt::WindowCloseButtonHint);  


5.添加任务栏图标

在MainWindow.h文件中添加如下代码

[cpp]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. #include <QSystemTrayIcon>    //任务栏类  
  2. #include <QMenu>    //菜单类  
  3.   
  4. private:  
  5.   
  6.     //窗口任务栏属性  
  7.     QSystemTrayIcon *trayIcon;  
  8.     QMenu *trayMenu;  
  9.     QAction *quitAction;    //退出程序  
  10.     QAction *restoreWinAction;  //恢复窗口  
  11.     void createMenu();  
[cpp]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. private slots:  
[cpp]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. void showNormal();  


在mainwindow.cpp中添加代码

[cpp]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1.     createMenu();  
  2.   
  3.     //判断系统是否支持托盘图标显示  
  4.     if(!QSystemTrayIcon::isSystemTrayAvailable())  
  5.     {  
  6.         return;  
  7.     }  
  8.   
  9.     //实例化托盘图标控件  
  10.     trayIcon = new QSystemTrayIcon(this);  
  11.     trayIcon->setIcon(QIcon(":/new/prefix1/icon"));     //设置托盘图标显示  
  12.     trayIcon->setToolTip("Calculator"); //显示提示信息  
  13.     trayIcon->showMessage("托盘","托盘管理",QSystemTrayIcon::Information,10000);  
  14.     trayIcon->setContextMenu(trayMenu); //绑定托盘菜单  
  15.     trayIcon->show();   //在任务栏显示图标  
  16.   
  17. //绘制任务栏菜单  
  18. void MainWindow::createMenu()  
  19. {  
  20.     restoreWinAction = new QAction("恢复(&R)",this);  
  21.     quitAction = new QAction("退出(&Q)",this);  
  22.   
  23.     //恢复窗口  
  24.     connect(restoreWinAction,SIGNAL(triggered(bool)),this,SLOT(showNormal()));  
  25.   
  26.     //退出程序  
  27.     connect(quitAction,SIGNAL(triggered(bool)),qApp,SLOT(quit()));  
  28.   
  29.     //添加菜单  
  30.     trayMenu = new QMenu((QWidget*)QApplication::desktop());  
  31.     trayMenu->addAction(restoreWinAction);  //将控件绑定到菜单  
  32.   
  33.     //添加分隔符  
  34.     trayMenu->addSeparator();  
  35.     trayMenu->addAction(quitAction);  
  36. }  
  37.   
  38. //恢复程序窗口  
  39. void MainWindow::showNormal()  
  40. {  
  41.     this->show();  
  42. }  
  43.   
  44. //最小化隐藏界面  
  45. void QWidget::changeEvent(QEvent *e)  
  46. {  
  47.     if((e->type()==QEvent::WindowStateChange)&&this->isMinimized())  
  48.     {  
  49.         this->hide();  
  50.     }  
  51. }  

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值