我想你可以通過創建你自己的QProgressDialog子類並添加你自己的SLOTS來實現它。 事情是這樣的:
MyQProgressDialog.h
class MyQProgressDialog : public QProgressDialog
{
Q_OBJECT
public slots:
setTitle(QString title);
setIcon(QIcon icon);
setSize(int w, int h);
};
MyQProgressDialog.cpp
void MyQProgressDialog::setTitle(QString title)
{
setWindowTitle(title);
}
void MyQProgressDialog::setIcon(QIcon icon)
{
setWindowIcon(icon)
}
void MyQProgressDialog::(int w, int h)
{
setFixedSize(w, h);
}
,然後變更與您的連接:
ASSERT(connect(&(updater.GetUpdateInstaller()), SIGNAL(progressValue(int)), progressDialog, SLOT(setValue(int))));
ASSERT(connect(&(updater.GetUpdateInstaller()), SIGNAL(progressText(QString)), progressDialog, SLOT(setLabelText(QString))));
ASSERT(connect(&(updater.GetUpdateInstaller()), SIGNAL(progressIcon(QIcon)), progressDialog, SLOT(setIcon(QIcon))));
ASSERT(connect(&(updater.GetUpdateInstaller()), SIGNAL(progressSize(int, int)), progressDialog, SLOT(setSize(int, int)));
//update the packages using the updater
updater.UpdatePackages();
這包括您創建2你的新信號progressIcon(QIcon)和progressSize(int,int) r更新程序。
編輯:現在我想起來了,如果你沿着這條道路走它可能會更易於只是創建一個新的插槽,把所有的東西進行更新,這樣的事情:
//MyQProgressDialog.h
class MyQProgressDialog : public QProgressDialog
{
Q_OBJECT
public slots:
updateEverything(Int value, QString text, QString title, QIcon icon, Int w, Int h);
};
//MyQProgressDialog.cpp
void MyQProgressDialog::updateEverything(Int value, QString text, QString title, QIcon icon, Int w, Int h)
{
setWindowTitle(title);
setWindowIcon(icon);
setFixedSize(w, h);
setValue(value);
setLabelText(text);
}
//Connection
ASSERT(connect(&(updater.GetUpdateInstaller()), SIGNAL(progress(int, QString, QString, QIcon, Int, Int)), progressDialog, SLOT(updateEverything(progress(int, QString, QString, QIcon, Int, Int)));
但是,這意味着你不能單獨升級方面了。取決於你在做什麼,它可能是有用的。
這也是一個很好的答案,但我更喜歡其他方法,因爲它具有更大的靈活性。感謝您的回答。 – ssk