繁体   English   中英

QTimer singleShot使用激活器

[英]QTimer singleShot use the activator

我的问题如下:我有QPushbutton *调用此

void Reflex::buttonClicked(){

QObject* senderObject = sender();
QPushButton* senderButton = qobject_cast<QPushButton*>(senderObject);
if (senderButton->text() == " "){
    .
    .
    .
    QTimer::singleShot(1000, senderButton, SLOT(repair()));
}

当单发程序时,我想对senderButton进行一些更改,但我不知道该怎么做。

可能性:

1)(此选项更多的面向对象,并且维护起来更加明智)子类QButton具有一个类似于以下内容的信号:

无效的delayClick(QPushButton *);

现在,重写void QPushButton :: mousePressEvent(QMouseEvent * e)[虚拟保护],让它启动一个计时器,以便在超时时发出delayCLick信号。

最后,将其连接到任何与按钮无关的操作,就完成了。

2)(使用已有的内容)使用到目前为止显示的内容,您可以将单击的按钮另存为成员变量(在Reflex中),并在执行操作时对其进行引用。

QT文档中的注释:警告:此函数[sender()]违反了模块化的面向对象原则。 但是,当多个信号连接到单个插槽时,访问发件人可能很有用。

IE:请尽量避免。 进行子分类非常容易。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM