0
我有一些非常简单的代码,显示一个QPushButton,点击后用一个随机数1 - 100更新一个旋转盒。问题是我可以快速连续多次点击该按钮,只能看到一个或两个更新纺纱器。Qt:强制重画来更新快速按钮点击的文本?
如何重新绘制每次点击QPushButton时的旋转盒?我已经验证了我正在触发并捕获多个点击信号,但Qt不会重新绘制它们中的大部分。
到目前为止,我已经尝试对所有父窗口小部件,sendPostedEvents()和processEvents()调用repaint(),repaint()。
#include <QtWidgets/QWidget>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QSpinBox>
#include <QtWidgets/QLayout>
#include <random>
#include <ctime>
class QtBtnEx : public QWidget
{
Q_OBJECT
public:
QtBtnEx(QWidget *parent = 0);
QPushButton* btn;
QSpinBox* spin;
public slots:
void onClicked();
};
QtBtnEx::QtBtnEx(QWidget *parent)
: QWidget(parent)
{
btn = new QPushButton("button");
spin = new QSpinBox();
btn->setFixedSize(90, 30);
spin->setFixedSize(90, 30);
this->setLayout(new QVBoxLayout());
this->layout()->setAlignment(Qt::AlignCenter);
this->layout()->addWidget(btn);
this->layout()->addWidget(spin);
connect(btn, &QPushButton::clicked, this, &QtBtnEx::onClicked);
}
//Fires for every button click but does not paint for every click
void QtBtnEx::onClicked()
{
srand(time(nullptr));
spin->setValue(rand() % 100);
}
如何更新spinbox?通过信号/插槽还是通过setValue?一些快速代码会有所帮助。 – Bruce
你有没有检查你是否错过了双击事件导致的点击事件? – Pete
对于测试用例,只需包含整个模块:'#include'。对于产品代码,“”形式是错误的。你应该直接使用''。 –