簡體   English   中英

Qt:如何實現QDialog StatusBar

[英]Qt : how to implement QDialog StatusBar

QDesigner大量設計的QDialog ,我在 web 上看到我可以添加QStatusBar ,代碼如下:

#include <QDialog>
#include <QStatusBar>
#include <QLayout>
#include <QApplication>
#include <QTextEdit>
#include <QStatusTipEvent>

class Dialog : public QDialog {
public:
Dialog() : QDialog(){
QLayout *l = new QVBoxLayout(this);
QTextEdit *te = new QTextEdit;
te->setStatusTip("XXX");
l->addWidget(te);
bar = new QStatusBar;
l->addWidget(bar);
l->setMargin(0);
l->setSpacing(0);
}
private:
QStatusBar *bar;
protected:
bool event(QEvent *e){
if(e->type()==QEvent::StatusTip){
QStatusTipEvent *ev = (QStatusTipEvent*)e;
bar->showMessage(ev->tip());
return true;
}
return QDialog::event(e);
}
};

int main(int argc, char **argv){
QApplication app(argc, argv);
Dialog dlg;
return dlg.exec();
}

它甚至在我的情況下都不起作用..也許QDialog已經有幾個包含小部件的層。

我的問題是我可以如何在QDesigner中使用占位符或以某種方式推廣放置QStatusbar class 的小部件嗎? 我不知道 …

在這種情況下我該怎么辦? 我可以實施新的QStatusbar嗎?

謝謝

我假設當您說它不起作用時,您在運行時看不到狀態欄。

我看不出有任何方法可以完全在設計師中做到這一點。 設計師當然反對將某些東西推廣到QStatusBar的想法。 我想你可以通過QStatusBar來欺騙設計者,然后將QWidget提升到你的子類。

但我認為我們還不需要 go 這條路線。 我認為對上面的代碼進行一些調整應該會有所幫助。

在設計器中,在對話框底部添加一個布局,無論哪種類型。 我稱我的'StatusBarLayout'。 您可以看到布局(底部被壓扁的紅色框)。 我刪除了對話框中的底部邊距,以便狀態欄在底部齊平。

在此處輸入圖像描述

現在刪除上面代碼中關於布局 l 的所有內容,然后執行以下操作:

bar = new QStatusBar(this);
pUI->StatusBarLayout->addWidget(bar);
pUI->textEdit->setStatusTip("XXX");

textEdit是在設計器中添加的。 現在,當您運行它時,您應該會看到:

在此處輸入圖像描述

我希望這會有所幫助

編輯:

您也可以在設計器中為各種小部件設置狀態提示,因此除非您願意,否則無需在代碼中執行此操作。

嘗試像這樣添加 QStatusBar:

QDialog dialog;
QLayout* layoutWidget = new QVBoxLayout(&dialog);
layoutWidget ->addWidget(new QTextEdit);
QStatusBar* statusBar = new QStatusBar;
layoutWidget ->addWidget(statusBar );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM