QProgress 新窗口中的栏不起作用
QProgressBar in new window don't work
当我点击主窗口的按钮时,我正在用QProgressBar创建新窗口,但是当新窗口创建时,QProgressBar不出现,而填充周期正在工作。然后出现QProgressBar并填充。
构造函数:ProgressWin::ProgressWin():QWidget()
{
this->resize(273,98);
this->move(670, 430);
bar1 = new QProgressBar(this);
bar1->setGeometry(20, 31, 251, 31);
bar1->setMinimum(0);
bar1->setMaximum(10000);
this->show();
unsigned long long secr, PQ;
unsigned long long rv;
unsigned long long decr;
for(int v = 0; v <= 100000; v++) {
bar1->setValue(v);
}
}
调用新窗口按钮代码:
void RsaMainWindow::ButtClickCrypt()
{
FileName1 = ui->LineCrypt->text();
if(FileName1.isEmpty()) {
QMessageBox::information(0, "Information", "File for Crypt wasn't chosen");
return;
}
NewWin = new ProgressWin;
}
新建窗口的类:
class ProgressWin : public QWidget
{
QProgressBar *bar1;
public:
ProgressWin();
};
MainWindow类:
[namespace Ui {
class RsaMainWindow;
}
class RsaMainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit RsaMainWindow(QWidget *parent = 0);
~RsaMainWindow();
private slots:
void ButtClickViewCryp();
void ButtClickViewDecr();
void ButtClickViewKeys();
void ButtClickCrypt();
void ButtClickDecr();
private:
Ui::RsaMainWindow *ui;
QString FileName1;
QString FileName2;
QString FileName3;
ProgressWin *NewWin;
};][1]
用户界面通常遵循事件循环原则:
While (not closing the app)
Wait for some event
update app according event
endWhile
如果你在GUI线程中实现你的重任务,当用户点击"执行重任务"时,管理这个点击的代码被调用,在它完成后,下面的事件将触发窗口的绘制。这意味着你的繁重任务将在任务期间冻结用户界面。
要正确执行一项繁重的任务,您需要:
- 创建一个执行任务的后台线程。每次迭代,它都会更新任务的一些共享内存(或等效)状态。一些UI库,如QT允许发送排队消息,这有助于这些情况。
- 在主线程中,更新状态时,将进度条设置为新值并返回。
相关文章:
- 代码编译但不起作用!cmd窗口只是理想和理想,但什么也没发生
- Gtk::带有set_icon_name的窗口图标集在 wayland 上不起作用
- Opencv在2013年第5季度不起作用.应用程序总是在窗口中崩溃
- 命名窗口正在显示,但不起作用
- SDL2 窗口在失焦时不起作用
- 为什么 OpenService() 在我检查窗口服务状态时不起作用?
- gtkmm 和多窗口不起作用
- 为什么 random() 在窗口中不起作用
- DirectX 呈现参数窗口=假不起作用
- 窗口处于全屏模式时,QT连接不起作用
- 窗口可防止多个实例代码不起作用
- 创建窗口不起作用,但不提供错误消息
- SFML 通过构造函数获取另一个类的窗口不起作用
- gtkmm 2.4 开罗时钟示例在修改为在 HBox 内部而不是主窗口内绘制时不起作用
- 创建窗口不起作用
- 设置控制台信息窗口大小调整不起作用 c++
- opencv 3.0 findContours函数在窗口中不起作用
- 在C++的窗口中打开文件对话框>过滤器不起作用
- freeeglut窗口init + glow 3.0上下文创建不起作用
- QProgress 新窗口中的栏不起作用