【问题标题】:Qt : how to implement QDialog StatusBarQt:如何实现 QDialog 状态栏
【发布时间】:2011-09-02 09:25:29
【问题描述】:

我有QDialog,它是用QDesigner 精心设计的,我在网上看到我可以用这样的代码添加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 类的小部件?我不知道……

在这种情况下我该怎么办?我可以实现新的QStatusbar吗?

谢谢

【问题讨论】:

    标签: c++ qt qdialog


    【解决方案1】:

    我假设当你说它不起作用时,你在运行时看不到状态栏。

    我看不出有任何方法可以完全在设计器中做到这一点。设计师当然反对将某些东西推广到QStatusBar 的想法。我想你可以通过继承QStatusBar,然后将QWidget 提升到你的子类来愚弄设计师。

    但我认为我们现在还不需要走那条路。我认为对上面的代码进行一些调整应该会有所帮助。

    在设计器中,在对话框底部添加一个布局,不管是哪种布局。我称我的'StatusBarLayout'。您可以看到布局(底部被压扁的红色框)。我删除了对话框中的底部边距,以便状态栏与底部齐平。

    现在删除上面代码中关于布局 l 的所有内容,然后这样做:

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

    textEdit 是在设计器中添加的。现在,当您运行它时,您应该会看到:

    希望对你有帮助

    编辑:

    您也可以在设计器中为各种小部件设置状态提示,因此除非您愿意,否则无需在代码中这样做。

    【讨论】:

    • 我做了什么,我只是在设计器中放置了小部件占位符,在代码中我只是将其删除并替换为状态栏
    【解决方案2】:

    尝试像这样添加 QStatusBar:

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

    【讨论】:

    • 我有问题,我所有的 gui 都已经在 QtDesigner 中完成了,如何将 StatusBar 与 QDesigner 一起放置?我可以放置 Widget 占位符,然后创建我的 StatusBar 并与设计师一起推广它吗?
    猜你喜欢
    • 1970-01-01
    • 2011-08-13
    • 1970-01-01
    • 1970-01-01
    • 2018-03-01
    • 1970-01-01
    • 2022-11-14
    • 1970-01-01
    • 2011-02-26
    相关资源
    最近更新 更多