零零碎碎看了很多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 }