gpt4 book ai didi

c++ - QTimer singleShot 使用激活器

转载 作者:行者123 更新时间:2023-11-28 08:08:09 24 4
gpt4 key购买 nike

我的问题如下:我有 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 有一个看起来像这样的信号:

void delayedClick(QPushButton *);

现在,覆盖 void QPushButton::mousePressEvent ( QMouseEvent * e ) [virtual protected] 并让它启动一个计时器以在超时时发出 delayedCLick 信号。

最后,将它连接到任何关心按钮的地方,就完成了。

2) (利用你所拥有的)使用您到目前为止向我们展示的内容,您可以将单击的按钮保存为成员变量(在 Reflex 中)并在 React 中引用它以执行您的任务。

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

IE:尽可能避免。进行子类化非常容易。

关于c++ - QTimer singleShot 使用激活器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9809085/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com