簡體   English   中英

過程功能完成后,如何使QProgressDialog停留?

[英]How to make QProgressDialog stay when process function is complete?

我在按鈕單擊處理程序中使用QProgressDialog,但是當過程完成時,對話框也會自動關閉。 我是否必須使用成員variabale的指針來創建此對象,以使其不自動關閉? 這是我的代碼的內容。

void MainWindow::on_pushButton_clicked()
{
    QProgressDialog progress("Counting files...", "App", 0, 100, this, Qt::Dialog);
    progress.setAutoClose( false );
    progress.setMinimumDuration(0);
    progress.setWindowModality(Qt::WindowModal);
    progress.setModal( true );

    for (int i = 0; i < 100; i++)
    {
        progress.setValue(i);
    }

}

如您所見,我正在做任何可能使它成為模態的事情,但是一旦循環結束,它會自動關閉。 完成過程功能后,保留它的正確方法是什么?

問題是您的progress對象在MainWindow::on_pushButton_clicked()插槽的末尾被破壞了。 您應該將其定義為類成員,並在需要時顯示它或動態創建它。

class MainWindow {
    private:
        QSharedPointer<QProgressDialog> progress;

    public slots:
        void on_pushButton_clicked() {
            progress = QSharedPointer<QProgressDialog>(new QProgressDialog("Counting files...", "App", 0, 100, this, Qt::Dialog));
            progress->setAutoClose( false );
            progress->setMinimumDuration(0);
            progress->setWindowModality(Qt::WindowModal);
            progress->setModal( true );

            for (int i = 0; i < 100; i++)
            {
                progress->setValue(i);
            }
        }
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM