我的应用程序中有一项操作可能需要几分钟才能完成。我希望显示一个简单的对话框,在操作开始时打开,显示一个简单的等待消息,如“正在进行的操作”。'并在操作完成时自动关闭。
为了实现上述功能,我试图使用没有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来说比较新。
答案 0 :(得分:2)
为了解决实际问题,我使用QLabel作为对话而不是QProgressDialog并调用QApplication :: processEvents(),以确保QLabel窗口也被绘制为合适的文本。
答案 1 :(得分:0)
我建议您创建一个新的小部件,然后您可以根据需要进行自定义。您可以插入图像和标签,也可以创建自己的方法(包括信号和插槽)。实施它需要更长的时间,但它将更加灵活和可扩展。