版權聲明
該文章原創於Qter開源社區(www.qter.org),作者yafeilinux,轉載請注明出處!
導語
在程序主窗口QMainWindow中,主要包含菜單欄,工具欄,中心部件和狀態欄。前面幾個已經講過了,這一篇講解狀態欄的使用。
環境是:
Windows 7 + Qt 4.8.1 +Qt Creator 2.4.1
目錄
一、添加動作狀態提示
二、顯示其他臨時信息
三、顯示永久信息
正文
一、添加動作狀態提示
1.
首先還是打開上一篇完成的程序。對於菜單動作添加狀態提示,可以很容易的在設計器中來完成。
2.
下面進入設計模式,在Action
編輯器中選中新建動作,然后在右面的屬性編輯器中將其statusTip
更改為“新建文件”。如下圖所示。
<ignore_js_op>

3.
這時運行程序,當光標移動到新建動作上時,在下面的狀態欄將會出現設置的提示。如下圖所示。
<ignore_js_op>

我們可以按照這種方式來設置其他動作的狀態欄提示信息。
二、顯示其他臨時信息
狀態信息可以被分為三類:臨時信息,如一般的提示信息,上面講到的動作提示就是臨時信息;正常信息,如顯示頁數和行號;永久信息,如顯示版本號或者日期。可以使用showMessage()
函數來顯示一個臨時消息,它會出現在狀態欄的最左邊。一般用addWidget()
函數添加一個QLabel
到狀態欄上用於顯示正常信息,它會生成到狀態欄的最左邊,可能會被臨時消息所掩蓋。
1.
我們到mainwindow.cpp
文件的構造函數最后面添加如下一行代碼:
ui
->
statusBar
->showMessage(tr("
歡迎訪問
Qt
愛好者社區!
"
));
這樣就可以在運行程序時顯示指定的狀態提示了。效果如下圖所示。
<ignore_js_op>

這個提示還可以設置顯示的時間。如:
ui
->
statusBar
->showMessage(tr("
歡迎訪問
Qt
愛好者社區!
"
),
2000
);
這樣提示顯示2000
毫秒即2
秒后會自動消失。
2.
下面我們在狀態欄添加一個標簽部件用來顯示一般的提示信息。因為無法在設計模式向狀態欄添加部件,所以只能使用代碼來實現。先在mainwindow.h
文件中添加類的前置聲明:
class
QLabel
;
然后添加一個私有對象定義:
QLabel
*
statusLabel
;
下面到mainwindow.cpp
文件中,先添加頭文件聲明:
#include
<QLabel>
然后到構造函數中將前面添加的:
ui
->
statusBar
->showMessage(tr("
歡迎訪問
Qt
愛好者社區!
"
),
2000
);
一行代碼注釋掉,再添加如下代碼:
statusLabel = new QLabel;
statusLabel->setMinimumSize(150, 20); //
設置標簽最小大小
statusLabel->setFrameShape(QFrame::WinPanel); //
設置標簽形狀
statusLabel->setFrameShadow(QFrame::Sunken); //
設置標簽陰影
ui->statusBar->addWidget(statusLabel);
statusLabel->setText(tr("
歡迎訪問Qt愛好者社區!"
));
這時運行程序,效果如下圖所示。
<ignore_js_op>

下面就可以在需要顯示狀態的時候,調用statusLabel
來設置文本了。
三、顯示永久信息
如果要顯示永久信息,要使用addPermanentWidget()
函數來添加一個如QLabel
一樣的可以顯示信息的部件,它會生成在狀態欄的最右端,不會被臨時消息所掩蓋。
我們在構造函數中添加如下代碼:
QLabel
*
permanent = new QLabel(this);
permanent->setFrameStyle(QFrame::Box | QFrame::Sunken);
permanent->setText(
tr("<a href=\"http://www.yafeilinux.com\">yafeilinux.com</a>"));
permanent->setTextFormat(Qt::RichText);
permanent->setOpenExternalLinks(true);
ui->statusBar->addPermanentWidget(permanent);
這樣就在狀態欄的右側添加了一個網站的超鏈接,點擊該鏈接就會自動在瀏覽器中打開網站。運行程序,效果如下圖所示。
<ignore_js_op>

結語
到這里整個文本編輯器的程序就算寫完了。我們這里沒有寫幫助菜單的功能實現,大家可以自己添加。而且程序中也有很多漏洞和不完善的地方,如果有興趣,大家也可以自己修改。因為時間和篇幅的原因,我們這里就不再過多的講述。如果想學習一下多文檔編輯器的實現,可以參考
《Qt及Qt Quick開發實戰精解》
一書的多文檔編輯器的實例。