我想你可以通过创建你自己的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