![](/img/trans.png)
[英]Bring window to front -> raise(),show(),activateWindow() don’t work
[英]QProgressBar in new window don't work
當我點擊MainWindow的按鈕時,我正在使用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線程中執行繁重的任務,當用戶單擊“執行繁重的任務”時,將調用管理此單擊的代碼,完成后,以下事件將觸發窗口的繪制。 這意味着您的繁重任務將在任務期間凍結用戶界面。
要正確執行繁重的任務,您需要:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.