如何在没有QProgressBar的情况下将QProgressDialog用作简单的等待对话框?

时间:2015-12-18 07:06:25

标签: qt qprogressbar

我的应用程序中有一项操作可能需要几分钟才能完成。我希望显示一个简单的对话框,在操作开始时打开,显示一个简单的等待消息,如“正在进行的操作”。'并在操作完成时自动关闭。

为了实现上述功能,我试图使用没有QProgressBar的QProgressDialog。它似乎工作正常,但我无法设置等待消息。以下是代码:

QProgressDialog progress(this);  
QLabel *lblCustom = new QLabel(&progress);  
progress.setBar(new QProgressBar());  
progress.setValue(0);  
progress.setLabel(lblCustom);  
progress.setLabelText("Operation in progress. Please wait...");  
progress.setMaximum(0);  
progress.setMinimum(0);  
progress.setModal(true);  
progress.setWindowTitle("Validate field data");  
progress.setCancelButton(0);  
progress.setFixedSize(400, 100);  
progress.setWindowFlags(progress.windowFlags() & ~Qt::WindowCloseButtonHint);  
progress.show();  
// operation  
progress.close();

设置标签文字似乎不起作用。请告诉我这里有什么问题?我对Qt来说比较新。

Dialog without wait message

2 个答案:

答案 0 :(得分:2)

为了解决实际问题,我使用QLabel作为对话而不是QProgressDialog并调用QApplication :: processEvents(),以确保QLabel窗口也被绘制为合适的文本。

答案 1 :(得分:0)

我建议您创建一个新的小部件,然后您可以根据需要进行自定义。您可以插入图像和标签,也可以创建自己的方法(包括信号和插槽)。实施它需要更长的时间,但它将更加灵活和可扩展。