gpt4 book ai didi

c++ - Qt : how to implement QDialog StatusBar

转载 作者:太空狗 更新时间:2023-10-29 19:44:37 25 4
gpt4 key购买 nike

我有 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 中使用 palceholder 或以某种方式提升放置 QStatusbar 类的小部件吗?我不知道……

遇到这种情况怎么办?我可以实现新的 QStatusbar 吗?

谢谢

最佳答案

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

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

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

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

enter image description here

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

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

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

enter image description here

希望对你有帮助

编辑:

您还可以在设计器中为各种小部件设置状态提示,因此除非您愿意,否则无需在代码中执行此操作。

关于c++ - Qt : how to implement QDialog StatusBar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6135514/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com