目錄
QWidget
設置父對象
窗口位置
測試代碼
窗口尺寸
窗口標題和圖標
信號
槽函數
QDialog
常用API
QDialog的子類
QMessageBox
QFileDialog
QFontDialog
QFontDialog類的靜態API
QColorDialog
顏色類 QColor
靜態API函數
測試代碼
QInputDialog
靜態函數
測試代碼
QProgressDialog
常用API
測試代碼
QMainWindow
菜單欄
工具欄
狀態欄
停靠窗口
QWidget
設置父對象
// 構造函數 QWidget::QWidget(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags());// 公共成員函數 // 給當前窗口設置父對象 void QWidget::setParent(QWidget *parent); void QWidget::setParent(QWidget *parent, Qt::WindowFlags f); // 獲取當前窗口的父對象, 沒有父對象返回 nullptr QWidget *QWidget::parentWidget() const;
窗口位置
//------------- 窗口位置 ------------- // 得到相對于當前窗口父窗口的幾何信息, 邊框也被計算在內 QRect QWidget::frameGeometry() const; // 得到相對于當前窗口父窗口的幾何信息, 不包括邊框 const QRect &geometry() const; // 設置當前窗口的幾何信息(位置和尺寸信息), 不包括邊框 void setGeometry(int x, int y, int w, int h); void setGeometry(const QRect &);// 移動窗口, 重新設置窗口的位置 void move(int x, int y); void move(const QPoint &);
測試代碼
// 獲取當前窗口的位置信息 void MainWindow::on_positionBtn_clicked() {QRect rect = this->frameGeometry();qDebug() << "左上角: " << rect.topLeft()<< "右上角: " << rect.topRight()<< "左下角: " << rect.bottomLeft()<< "右下角: " << rect.bottomRight()<< "寬度: " << rect.width()<< "高度: " << rect.height(); }// 重新設置當前窗口的位置以及寬度, 高度 void MainWindow::on_geometryBtn_clicked() {int x = 100 + rand() % 500;int y = 100 + rand() % 500;int width = this->width() + 10;int height = this->height() + 10;setGeometry(x, y, width, height); }// 通過 move() 方法移動窗口 void MainWindow::on_moveBtn_clicked() {QRect rect = this->frameGeometry();move(rect.topLeft() + QPoint(10, 20)); }
窗口尺寸
//------------- 窗口尺寸 ------------- // 獲取當前窗口的尺寸信息 QSize size() const // 重新設置窗口的尺寸信息 void resize(int w, int h); void resize(const QSize &); // 獲取當前窗口的最大尺寸信息 QSize maximumSize() const; // 獲取當前窗口的最小尺寸信息 QSize minimumSize() const; // 設置當前窗口固定的尺寸信息 void QWidget::setFixedSize(const QSize &s); void QWidget::setFixedSize(int w, int h); // 設置當前窗口的最大尺寸信息 void setMaximumSize(const QSize &); void setMaximumSize(int maxw, int maxh); // 設置當前窗口的最小尺寸信息 void setMinimumSize(const QSize &); void setMinimumSize(int minw, int minh);// 獲取當前窗口的高度 int height() const; // 獲取當前窗口的最小高度 int minimumHeight() const; // 獲取當前窗口的最大高度 int maximumHeight() const; // 給窗口設置固定的高度 void QWidget::setFixedHeight(int h); // 給窗口設置最大高度 void setMaximumHeight(int maxh); // 給窗口設置最小高度 void setMinimumHeight(int minh);// 獲取當前窗口的寬度 int width() const; // 獲取當前窗口的最小寬度 int minimumWidth() const; // 獲取當前窗口的最大寬度 int maximumWidth() const; // 給窗口設置固定寬度 void QWidget::setFixedWidth(int w); // 給窗口設置最大寬度 void setMaximumWidth(int maxw);
窗口標題和圖標
//------------- 窗口圖標 ------------- // 得到當前窗口的圖標 QIcon windowIcon() const; // 構造圖標對象, 參數為圖片的路徑 QIcon::QIcon(const QString &fileName); // 設置當前窗口的圖標 void setWindowIcon(const QIcon &icon);//------------- 窗口標題 ------------- // 得到當前窗口的標題 QString windowTitle() const; // 設置當前窗口的標題 void setWindowTitle(const QString &);
信號
// QWidget::setContextMenuPolicy(Qt::ContextMenuPolicy policy); // 窗口的右鍵菜單策略 contextMenuPolicy() 參數設置為 Qt::CustomContextMenu, 按下鼠標右鍵發射該信號 [signal] void QWidget::customContextMenuRequested(const QPoint &pos); // 窗口圖標發生變化, 發射此信號 [signal] void QWidget::windowIconChanged(const QIcon &icon); // 窗口標題發生變化, 發射此信號 [signal] void QWidget::windowTitleChanged(const QString &title);
槽函數
//------------- 窗口顯示 ------------- // 關閉當前窗口 [slot] bool QWidget::close(); // 隱藏當前窗口 [slot] void QWidget::hide(); // 顯示當前創建以及其子窗口 [slot] void QWidget::show(); // 全屏顯示當前窗口, 只對windows有效 [slot] void QWidget::showFullScreen(); // 窗口最大化顯示, 只對windows有效 [slot] void QWidget::showMaximized(); // 窗口最小化顯示, 只對windows有效 [slot] void QWidget::showMinimized(); // 將窗口回復為最大化/最小化之前的狀態, 只對windows有效 [slot] void QWidget::showNormal();//------------- 窗口狀態 ------------- // 判斷窗口是否可用 bool QWidget::isEnabled() const; // 非槽函數 // 設置窗口是否可用, 不可用窗口無法接收和處理窗口事件 // 參數true->可用, false->不可用 [slot] void QWidget::setEnabled(bool); // 設置窗口是否可用, 不可用窗口無法接收和處理窗口事件 // 參數true->不可用, false->可用 [slot] void QWidget::setDisabled(bool disable); // 設置窗口是否可見, 參數為true->可見, false->不可見 [slot] virtual void QWidget::setVisible(bool visible);
QDialog
常用API
// 構造函數 QDialog::QDialog(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags());// 模態顯示窗口 [virtual slot] int QDialog::exec(); // 隱藏模態窗口, 并且解除模態窗口的阻塞, 將 exec() 的返回值設置為 QDialog::Accepted [virtual slot] void QDialog::accept(); // 隱藏模態窗口, 并且解除模態窗口的阻塞, 將 exec() 的返回值設置為 QDialog::Rejected [virtual slot] void QDialog::reject(); // 關閉對話框并將其結果代碼設置為r。finished()信號將發出r; // 如果r是QDialog::Accepted 或 QDialog::Rejected,則還將分別發出accept()或Rejected()信號。 [virtual slot] void QDialog::done(int r);[signal] void QDialog::accepted(); [signal] void QDialog::rejected(); [signal] void QDialog::finished(int result);
關于對話框窗口類的操作
// 對話框窗口中三個普通按鈕按下之后對應的槽函數 void MyDialog::on_acceptBtn_clicked() {this->accept(); // exec()函數返回值為QDialog::Accepted }void MyDialog::on_rejectBtn_clicked() {this->reject(); // exec()函數返回值為QDialog::Rejected }void MyDialog::on_donBtn_clicked() {// exec()函數返回值為 done() 的參數, 并根據參數發射出對應的信號this->done(666); }
根據用戶針對對話框窗口的按鈕操作, 進行相應的邏輯處理
// 創建對話框對象 MyDialog dlg; int ret = dlg.exec(); if(ret == QDialog::Accepted) {qDebug() << "accept button clicked...";// 顯示主窗口MainWindow* w = new MainWindow;w->show(); } else if(ret == QDialog::Rejected) {qDebug() << "reject button clicked...";// 不顯示主窗口............ } else {// ret == 666qDebug() << "done button clicked...";// 根據需求進行邏輯處理............ }
QDialog的子類
QMessageBox
QMessageBox 對話框類是 QDialog 類的子類, 通過這個類可以顯示一些簡單的提示框, 用于展示警告、錯誤、問題等信息。關于這個類我們只需要掌握一些靜態方法的使用就可以了。
QFileDialog
QFileDialog 對話框類是 QDialog 類的子類, 通過這個類可以選擇要打開/保存的文件或者目錄。關于這個類我們只需要掌握一些靜態方法的使用就可以了。
- parent: 當前對話框窗口的父對象也就是父窗口- caption: 當前對話框窗口的標題- dir: 當前對話框窗口打開的默認目錄- options: 當前對話框窗口的一些可選項,枚舉類型, 一般不需要進行設置, 使用默認值即可- filter: 過濾器, 在對話框中只顯示滿足條件的文件, 可以指定多個過濾器, 使用 ;; 分隔- 樣式舉例: - Images (*.png *.jpg)- Images (*.png *.jpg);;Text files (*.txt)- selectedFilter: 如果指定了多個過濾器, 通過該參數指定默認使用哪一個, 不指定默認使用第一個過濾器
打開
一個已存在的本地目錄
void MainWindow::on_filedlg_clicked() {QString dirName = QFileDialog::getExistingDirectory(this, "打開目錄", "e:\\temp");QMessageBox::information(this, "打開目錄", "您選擇的目錄是: " + dirName); }
打開
一個本地文件
void MainWindow::on_filedlg_clicked() {QString arg("Text files (*.txt)");QString fileName = QFileDialog::getOpenFileName(this, "Open File", "e:\\temp","Images (*.png *.jpg);;Text files (*.txt)", &arg);QMessageBox::information(this, "打開文件", "您選擇的文件是: " + fileName); }
打開
多個本地文件
void MainWindow::on_filedlg_clicked() {QStringList fileNames = QFileDialog::getOpenFileNames(this, "Open File", "e:\\temp","Images (*.png *.jpg);;Text files (*.txt)");QString names;for(int i=0; i<fileNames.size(); ++i){names += fileNames.at(i) + " ";}QMessageBox::information(this, "打開文件(s)", "您選擇的文件是: " + names); }
打開
保存文件對話框
void MainWindow::on_filedlg_clicked() {QString fileName = QFileDialog::getSaveFileName(this, "保存文件", "e:\\temp");QMessageBox::information(this, "保存文件", "您指定的保存數據的文件是: " + fileName); }
QFontDialog
QFontDialog
類是QDialog
的子類, 通過這個類我們可以得到一個進行字體屬性設置的對話框窗口, 和前邊介紹的對話框類一樣, 我們只需要調用這個類的靜態成員函數就可以得到想要的窗口了。
// 構造函數QFont::QFont();/*參數:- family: 本地字庫中的字體名, 通過 office 等文件軟件可以查看- pointSize: 字體的字號- weight: 字體的粗細, 有效范圍為 0 ~ 99- italic: 字體是否傾斜顯示, 默認不傾斜*/QFont::QFont(const QString &family, int pointSize = -1, int weight = -1, bool italic = false);// 設置字體void QFont::setFamily(const QString &family);// 根據字號設置字體大小void QFont::setPointSize(int pointSize);// 根據像素設置字體大小void QFont::setPixelSize(int pixelSize);// 設置字體的粗細程度, 有效范圍: 0 ~ 99void QFont::setWeight(int weight);// 設置字體是否加粗顯示void QFont::setBold(bool enable);// 設置字體是否要傾斜顯示void QFont::setItalic(bool enable);// 獲取字體相關屬性(一般規律: 去掉設置函數的 set 就是獲取相關屬性對應的函數名)QString QFont::family() const;bool QFont::italic() const;int QFont::pixelSize() const;int QFont::pointSize() const;bool QFont::bold() const;int QFont::weight() const;
如果一個
QFont
對象被創建, 并且進行了初始化, 我們可以將這個屬性設置給某個窗口, 或者設置給當前應用程序對象。// QWidget 類 // 得到當前窗口使用的字體 const QWidget::QFont& font() const; // 給當前窗口設置字體, 只對當前窗口類生效 void QWidget::setFont(const QFont &);// QApplication 類 // 得到當前應用程序對象使用的字體 [static] QFont QApplication::font(); // 給當前應用程序對象設置字體, 作用于當前應用程序的所有窗口 [static] void QApplication::setFont(const QFont &font, const char *className = nullptr);
QFontDialog類的靜態API
/* 參數:- ok: 傳出參數, 用于判斷是否獲得了有效字體信息, 指定一個布爾類型變量地址- initial: 字體對話框中默認選中并顯示該字體信息, 用于對話框的初始化- parent: 字體對話框窗口的父對象- title: 字體對話框的窗口標題- options: 字體對話框選項, 使用默認屬性即可, 一般不設置 */[static] QFont QFontDialog::getFont(bool *ok, const QFont &initial, QWidget *parent = nullptr, const QString &title = QString(), QFontDialog::FontDialogOptions options = FontDialogOptions());[static] QFont QFontDialog::getFont(bool *ok, QWidget *parent = nullptr);
通過字體對話框選擇字體, 并將選擇的字體設置給當前窗口
void MainWindow::on_fontdlg_clicked() { #if 1// 方式1bool ok;QFont ft = QFontDialog::getFont(&ok, QFont("微軟雅黑", 12, QFont::Bold), this, "選擇字體");qDebug() << "ok value is: " << ok; #else// 方式2QFont ft = QFontDialog::getFont(NULL); #endif// 將選擇的字體設置給當前窗口對象this->setFont(ft); }
QColorDialog
QColorDialog
類是QDialog
的子類, 通過這個類我們可以得到一個選擇顏色的對話框窗口, 和前邊介紹的對話框類一樣, 我們只需要調用這個類的靜態成員函數就可以得到想要的窗口了。顏色類 QColor
關于顏色的屬性信息, 在QT框架中被封裝到了一個叫
QColor
的類中, 下邊為大家介紹一下這個類的API, 了解一下關于這個類的使用。
各種顏色都是基于紅
,?綠
,?藍
這三種顏色調配而成的, 并且顏色還可以進行透明度設置, 默認是不透明的。// 構造函數 QColor::QColor(Qt::GlobalColor color); QColor::QColor(int r, int g, int b, int a = ...); QColor::QColor();// 參數設置 red, green, blue, alpha, 取值范圍都是 0-255 void QColor::setRed(int red); // 紅色 void QColor::setGreen(int green); // 綠色 void QColor::setBlue(int blue); // 藍色 void QColor::setAlpha(int alpha); // 透明度, 默認不透明(255) void QColor::setRgb(int r, int g, int b, int a = 255);int QColor::red() const; int QColor::green() const; int QColor::blue() const; int QColor::alpha() const; void QColor::getRgb(int *r, int *g, int *b, int *a = nullptr) const;
靜態API函數
// 彈出顏色選擇對話框, 并返回選中的顏色信息 /* 參數:- initial: 對話框中默認選中的顏色, 用于窗口初始化- parent: 給對話框窗口指定父對象- title: 對話框窗口的標題- options: 顏色對話框窗口選項, 使用默認屬性即可, 一般不需要設置 */[static] QColor QColorDialog::getColor(const QColor &initial = Qt::white, QWidget *parent = nullptr, const QString &title = QString(), QColorDialog::ColorDialogOptions options = ColorDialogOptions());
測試代碼
QInputDialog
QInputDialog
類是QDialog
的子類, 通過這個類我們可以得到一個輸入對話框窗口, 根據實際需求我們可以在這個輸入窗口中輸入整形
,?浮點型
,?字符串
類型的數據, 并且還可以顯示下拉菜單供使用者選擇。
和前邊介紹的對話框類一樣, 我們只需要調用這個類的靜態成員函數就可以得到想要的窗口了。靜態函數
// 得到一個可以輸入浮點數的對話框窗口, 返回對話框窗口中輸入的浮點數 /* 參數:- parent: 對話框窗口的父窗口- title: 對話框窗口顯示的標題信息- label: 對話框窗口中顯示的文本信息(用于描述對話框的功能)- value: 對話框窗口中顯示的浮點值, 默認為 0- min: 對話框窗口支持顯示的最小數值- max: 對話框窗口支持顯示的最大數值- decimals: 浮點數的精度, 默認保留小數點以后1位- ok: 傳出參數, 用于判斷是否得到了有效數據, 一般不會使用該參數- flags: 對話框窗口的窗口屬性, 使用默認值即可 */ [static] double QInputDialog::getDouble(QWidget *parent, const QString &title, const QString &label, double value = 0, double min = -2147483647, double max = 2147483647, int decimals = 1, bool *ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags());// 得到一個可以輸入整形數的對話框窗口, 返回對話框窗口中輸入的整形數 /* 參數:- parent: 對話框窗口的父窗口- title: 對話框窗口顯示的標題信息- label: 對話框窗口中顯示的文本信息(用于描述對話框的功能)- value: 對話框窗口中顯示的整形值, 默認為 0- min: 對話框窗口支持顯示的最小數值- max: 對話框窗口支持顯示的最大數值- step: 步長, 通過對話框提供的按鈕調節數值每次增長/遞減的量- ok: 傳出參數, 用于判斷是否得到了有效數據, 一般不會使用該參數- flags: 對話框窗口的窗口屬性, 使用默認值即可 */ [static] int QInputDialog::getInt(QWidget *parent, const QString &title, const QString &label, int value = 0, int min = -2147483647, int max = 2147483647, int step = 1, bool *ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags());// 得到一個帶下來菜單的對話框窗口, 返回選擇的菜單項上邊的文本信息 /* 參數:- parent: 對話框窗口的父窗口
測試代碼
帶下拉菜單的輸入框
void MainWindow::on_inputdlg_clicked() {QStringList items;items << "蘋果" << "橙子" << "橘子" << "葡萄" << "香蕉" << "哈密瓜";QString item = QInputDialog::getItem(this, "請選擇你喜歡的水果", "你最喜歡的水果:", items, 1, false);QMessageBox::information(this, "水果", "您最喜歡的水果是: " + item); }
多行字符串輸入框
void MainWindow::on_inputdlg_clicked() {QString info = QInputDialog::getMultiLineText(this, "表白", "您最想對漂亮小姐姐說什么呢?", "呦吼吼...");QMessageBox::information(this, "知心姐姐", "您最想對小姐姐說: " + info); }
單行字符串輸入框
void MainWindow::on_inputdlg_clicked() {QString text = QInputDialog::getText(this, "密碼", "請輸入新的密碼", QLineEdit::Password, "helloworld");QMessageBox::information(this, "密碼", "您設置的密碼是: " + text); }
QProgressDialog
QProgressDialog
類是QDialog
的子類, 通過這個類我們可以得到一個帶進度條的對話框窗口, 這種類型的對話框窗口一般常用于文件拷貝、數據傳輸等實時交互的場景中。常用API
// 構造函數 /* 參數:- labelText: 對話框中顯示的提示信息- cancelButtonText: 取消按鈕上顯示的文本信息- minimum: 進度條最小值- maximum: 進度條最大值- parent: 當前窗口的父對象- f: 當前進度窗口的flag屬性, 使用默認屬性即可, 無需設置 */ QProgressDialog::QProgressDialog(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags());QProgressDialog::QProgressDialog(const QString &labelText, const QString &cancelButtonText, int minimum, int maximum, QWidget *parent = nullptr,Qt::WindowFlags f = Qt::WindowFlags());// 設置取消按鈕顯示的文本信息 [slot] void QProgressDialog::setCancelButtonText(const QString &cancelButtonText);// 公共成員函數和槽函數 QString QProgressDialog::labelText() const; void QProgressDialog::setLabelText(const QString &text);// 得到進度條最小值 int QProgressDialog::minimum() const; // 設置進度條最小值 void QProgressDialog::setMinimum(int minimum);// 得到進度條最大值 int QProgressDialog::maximum() const; // 設置進度條最大值 void QProgressDialog::setMaximum(int maximum);// 設置進度條范圍(最大和最小值) [slot] void QProgressDialog::setRange(int minimum, int maximum);// 得到進度條當前的值 int QProgressDialog::value() const; // 設置進度條當前的值 void QProgressDialog::setValue(int progress);
測試代碼
場景描述:1. 基于定時器模擬文件拷貝的場景2. 點擊窗口按鈕, 進度條窗口顯示, 同時啟動定時器3. 通過定時器信號, 按照固定頻率更新對話框窗口進度條4. 當進度條當前值 == 最大值, 關閉定時器, 關閉并析構進度對話框void MainWindow::on_progressdlg_clicked() {// 1. 創建進度條對話框窗口對象QProgressDialog *progress = new QProgressDialog("正在拷貝數據...", "取消拷貝", 0, 100, this);// 2. 初始化并顯示進度條窗口progress->setWindowTitle("請稍后");progress->setWindowModality(Qt::WindowModal);progress->show();// 3. 更新進度條static int value = 0;QTimer *timer = new QTimer;connect(timer, &QTimer::timeout, this, [=](){progress->setValue(value);value++;// 當value > 最大值的時候if(value > progress->maximum()){timer->stop();value = 0;delete progress;delete timer;}});connect(progress, &QProgressDialog::canceled, this, [=](){timer->stop();value = 0;delete progress;delete timer;});timer->start(50); }
QMainWindow
QMainWindow是標準基礎窗口中結構最復雜的窗口, 其組成如下:
- 提供了
菜單欄
,?工具欄
,?狀態欄
,?停靠窗口
- 菜單欄: 只能有一個, 位于窗口的最上方
- 工具欄: 可以有多個, 默認提供了一個, 窗口的上下左右都可以停靠
- 狀態欄: 只能有一個, 位于窗口最下方
- 停靠窗口: 可以有多個, 默認沒有提供, 窗口的上下左右都可以停靠
菜單欄
關于頂級菜單可以直接在UI窗口中雙擊, 直接輸入文本信息即可, 對應子菜單項也可以通過先雙擊在輸入的方式完成添加, 但是
這種方式不支持中文的輸入
。常用的添加方式
一般情況下, 我們都是先在外面創建出
QAction
對象, 然后再將其拖拽到某個菜單下邊, 這樣子菜單項的添加就完成了。通過代碼的方式添加菜單或者菜單項
// 給菜單欄添加菜單 QAction *QMenuBar::addMenu(QMenu *menu); QMenu *QMenuBar::addMenu(const QString &title); QMenu *QMenuBar::addMenu(const QIcon &icon, const QString &title);// 給菜單對象添加菜單項(QAction) QAction *QMenu::addAction(const QString &text); QAction *QMenu::addAction(const QIcon &icon, const QString &text);// 添加分割線 QAction *QMenu::addSeparator();
菜單項 QAction 事件的處理
單擊菜單項, 該對象會發出一個信號
// 點擊QAction對象發出該信號 [signal] void QAction::triggered(bool checked = false);// save_action 是某個菜單項對象名, 點擊這個菜單項會彈出一個對話框 connect(ui->save_action, &QAction::triggered, this, [=]() {QMessageBox::information(this, "Triggered", "我是菜單項, 你不要調戲我..."); });
工具欄
一共有兩種方式, 這里依次為大家進行介紹。
方式1:先創建QAction對象, 然后拖拽到工具欄中, 和添加菜單項的方式相同
方式2:如果不通過UI界面直接操作,那么就需要調用相關的API函數了
// 在QMainWindow窗口中添加工具欄 void QMainWindow::addToolBar(Qt::ToolBarArea area, QToolBar *toolbar); void QMainWindow::addToolBar(QToolBar *toolbar); QToolBar *QMainWindow::addToolBar(const QString &title);// 將Qt控件放到工具欄中 // 工具欄類: QToolBar // 添加的對象只要是QWidget或者啟子類都可以被添加 QAction *QToolBar::addWidget(QWidget *widget);// 添加QAction對象 QAction *QToolBar::addAction(const QString &text); QAction *QToolBar::addAction(const QIcon &icon, const QString &text);// 添加分隔線 QAction *QToolBar::addSeparator()
通過代碼的方式對工具欄進行操作
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui->setupUi(this);// 添加第二個工具欄QToolBar* toolbar = new QToolBar("toolbar");this->addToolBar(Qt::LeftToolBarArea, toolbar);// 給工具欄添加按鈕和單行輸入框ui->toolBar->addWidget(new QPushButton("搜索"));QLineEdit* edit = new QLineEdit;edit->setMaximumWidth(200);edit->setFixedWidth(100);ui->toolBar->addWidget(edit);// 添加QAction類型的菜單項ui->toolBar->addAction(QIcon(":/er-dog"), "二狗子"); }
工具欄的屬性設置
在UI窗口的樹狀列表中, 找到工具欄節點, 就可以到的工具欄的屬性設置面板了, 這樣就可以根據個人需求對工具欄的屬性進行設置和修改了。
狀態欄
一般情況下, 需要在狀態欄中添加某些控件, 顯示某些屬性, 使用最多的就是添加標簽 QLabel
// 類型: QStatusBar void QStatusBar::addWidget(QWidget *widget, int stretch = 0);[slot] void QStatusBar::clearMessage(); [slot] void QStatusBar::showMessage(const QString &message, int timeout = 0);
相關的操作代碼
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui->setupUi(this);// 狀態欄添加子控件// 按鈕QPushButton* button = new QPushButton("按鈕");ui->statusBar->addWidget(button);// 標簽QLabel* label = new QLabel("hello,world");ui->statusBar->addWidget(label); }
停靠窗口
停靠窗口可以通過鼠標拖動停靠到窗口的上、下、左、右,或者浮動在窗口上方。如果需要這種類型的窗口必須手動添加,
如果在非QMainWindow類型的窗口中添加了停靠窗口, 那么這個窗口是不能移動和浮動的。
浮動窗口在工具欄中, 直接將其拖拽到UI界面上即可。(Dock Widget)停靠窗口也有一個屬性面板, 我們可以在其對應屬性面板中直接進行設置和修改相關屬性。