Qt 窗口的一些簡單設置-標題、圖標、最大化最小化按鈕、任務欄圖標


零零碎碎看了很多Qt例子,有一些很零散的窗體控制方法,在這總結一些。

1.更改窗體標題

this->setWindowTitle("窗體標題");

窗體標題”就是更改的窗體標題


2.控制窗體大小

1 this->setMaximumSize(300,300);  //窗體最大尺寸
2 this->setMinimumSize(300,300);  //窗體最小尺寸
3 this->setMinimumHeight(300);    //單獨設置窗體高的最小值
4 this->setMaximumWidth(300);     //單獨設置窗體寬的最小值

也可以通過窗體布局控制窗體大小

1 QGridLayout *mainLayout = new QGridLayout;                  //窗體中控件為網格布局
2 mainLayout->setSizeConstraint(QLayout::SetFixedSize);       //布局大小不變

在構造函數中的這個函數強制設置窗體的布局為固定大小,用戶不可自行調整對話框大小。布局管理器將會負責調整大小的任務,當一些子窗口期間顯示或隱藏的時候自動的調整對話框的大小,以保證對話框總是以優化了的大小顯示。

在官方文檔中setSizeConstraint給的解釋為:sizeConstraint:SizeConstraint.  This property holds the resize mode of the layout.

這個函數主要是通過布局管理器對布局大小進行限制,與上面介紹的窗體大小有所不同。

函數SetFixedSize如下:

void QWidget::setFixedSize(const QSize &s);

設置控件的最大和最小尺寸為s,防止控件大小的變化。


3.更改窗體圖標

首先在項目右鍵-->添加新文件,彈出如下對話框

在左側選中Qt,右側選擇Qt Resource File,然后Choose,頁面如下:

如果路徑沒錯的話就自己命一個名字例如:icon,然后下一步,一路next知道完成。這時候在工程文件目錄下多出一個后綴為.qrc的文件,打開,如下:

然后在右側點擊添加->添加前綴,然后->添加文件,選擇准備好的ICO圖片,圖片可以去矢量圖庫搜索下載,這里選用32*32的彩色圖標,添加完圖標后給圖標起一個別名,容易被記憶的,寫代碼的時候可以直接用別名代替圖片名稱,如下:

這時候窗體圖標就已經准備好了,下面開始編寫代碼,在mainwindows.cpp文件中

1 this->setWindowTitle("calculator");                     //設置窗體標題
2 this->setMaximumSize(300,400);                          //窗體最大尺寸
3 this->setMinimumSize(300,400);                          //窗體最小尺寸
4 this->setWindowIcon(QIcon(":/new/prefix1/icon"));       //窗體圖標

運行看一下圖標已經改了。


4.去掉標題欄中最大化最小化按鈕

1 //關閉按鈕失效
2 this->setWindowFlags(Qt::WindowMinMaxButtonsHint); 3 //去掉最大化最小化按鈕,保留關閉按鈕
4 this->setWindowFlags(Qt::WindowCloseButtonHint);

5.添加任務欄圖標

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

 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();
1 private slots: 2       void showNormal();

在mainwindow.cpp中添加代碼

 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 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM