我在QT中为动画提供动画时遇到了问题。
以下代码中的错误在哪里,我正在获得继续进度条,但它没有动画
QApplication a(argc, argv);
QProgressDialog *dialog = new QProgressDialog();
QProgressBar *pbar = new QProgressBar(dialog);
pbar->setMinimum(0);
pbar->setMaximum(0);
pbar->setTextVisible(false);
QDesktopWidget *desktop = QApplication::desktop();
QRect rect = desktop->geometry();
pbar->setGeometry(rect.left(),rect.top(),rect.right(),rect.bottom()-300);
pbar->show();
dialog->setBar(pbar);
dialog->showMaximized();
dialog->exec();
return a.exec();
答案 0 :(得分:7)
我在Qt 4.5.3的WinXP上尝试了这个代码,它按预期工作。 我不能给你一个解决方案,但我有一个建议: 您不需要将QProgressBar设置为QProgressDialog,它已经有了自己的。
删除QProgressBar的代码,下面的代码与我机器上的原始代码做同样的事情。
QApplication a(argc, argv);
QProgressDialog *dialog = new QProgressDialog();
dialog->setMinimum(0);
dialog->setMaximum(0);
dialog->showMaximized();
dialog->exec();
return a.exec();
答案 1 :(得分:1)
如果您使用的是Windows Vista主题(QWindowsVistaStyle),则会出现一个错误,表示不确定进度条没有动画效果。我在这里写了这个bug,完成了简单的补丁:http://bugreports.qt-project.org/browse/QTBUG-10984
答案 2 :(得分:-2)
Dudes,您认为进度条究竟是什么?它应该向用户显示活动正在进行以及当前进度状态是什么。
您的代码
QProgressDialog *dialog = new QProgressDialog();
dialog->setMinimum(0);
dialog->setMaximum(0);
表示某个操作将从状态0开始,并在状态(或当前值)达到值... 0时结束。你想要一些动画吗?
请参阅http://doc.trolltech.com/4.6/qprogressdialog.html#details
上的示例基本上你应该创建一个具有最小值和最大值的进度对话框
QProgressDialog *dialog = new QProgressDialog();
dialog->setMinimum(0);
dialog->setMaximum(100);
然后更新实际进度值(例如,在触发执行槽的计时器上),以便在进度条中显示它:
void Operation::perform()
{
dialog->setValue(steps);
//... perform one percent of the operation
steps++;
if (steps > dialog->maximum())
t->stop();
}
一系列更新,逐步增加进度值,将创建您想要的动画效果。
显然用Symbian标记它是完全错误的,这根本不是Symbian特有的。也不是Qt 4.x具体,地狱......它甚至不是Qt特定的,它基本上是一个逻辑问题。 ;)