我的问题如下: 我有调用此
的QPushbutton *void Reflex::buttonClicked(){
QObject* senderObject = sender();
QPushButton* senderButton = qobject_cast<QPushButton*>(senderObject);
if (senderButton->text() == " "){
.
.
.
QTimer::singleShot(1000, senderButton, SLOT(repair()));
}
当单一拍摄过程我想对senderButton做一些改变,但我无法弄清楚我应该怎么做。
答案 0 :(得分:1)
的可能性:
1)(此选项更为OO,维护更加明智) 子类QButton有一个看起来像这样的信号:
void delayedClick(QPushButton *);
现在,覆盖void QPushButton :: mousePressEvent(QMouseEvent * e)[虚拟保护]并启动计时器以在超时时发出delayedCLick信号。
最后,将此连接到关于按钮的任何关心,你就完成了。
2)(使用你得到的) 使用您向我们展示的内容,您可以将单击的按钮保存为成员变量(在Reflex中)并引用它作为响应以执行您的任务。
来自QT文档的说明: 警告:此函数[sender()]违反了面向对象的模块化原则。但是,当许多信号连接到单个插槽时,访问发送器可能很有用。
IE:尽可能避免。子类化很容易。