gpt4 book ai didi

c++ - Qt 无法按名称插入,即使在设置了 objectName 之后

转载 作者:行者123 更新时间:2023-11-30 05:41:04 24 4
gpt4 key购买 nike

当我尝试通过 Qt 元对象的能力使用 Qt 自动信号来插入连接时会发生这种情况。我尝试创建一个 QTimer 对象,并更改了它的名称,但是插槽无法匹配信号,我不知道为什么。这是我的代码:

mytimer.h:

#ifndef MYTIMER_H
#define MYTIMER_H

#include <QMainWindow>
#include <QTimer>

namespace Ui {
class MyTimer;
}

class MyTimer : public QMainWindow
{
Q_OBJECT

public:
explicit MyTimer(QWidget *parent = 0);
~MyTimer();

private:
Ui::MyTimer *ui;
QTimer *timer;
private slots:
void on_timerOne_timeout();
};

#endif // MYTIMER_H

我的定时器.cpp:

#include "mytimer.h"
#include "ui_mytimer.h"
#include <QTimer>
#include <QDebug>

MyTimer::MyTimer(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MyTimer)
{
ui->setupUi(this);
timer = new QTimer(this);
timer->setObjectName("timerOne");
// connect(timer, &QTimer::timeout, this, &MyTimer::MySlot);
timer->start(1000);
}

MyTimer::~MyTimer()
{
delete ui;
}

void MyTimer::on_timerOne_timeout()
{
qDebug() << "Timer running...";
}

在我将定时器的 ObjectName 更改为 timerOne 之后,signal-slot-auto-connection :

void MyTimer::on_timerOne_timeout() 

无法正常运行。

使用 Qt 5.5.0

最佳答案

根据您的评论,QMetaObject::connectSlotsByNameUi::MyTimer::setupUi 调用.但是你调用setupUi在构建 QTimer 之前, 所以没有名为 timerOne 的子对象什么时候setupUi被调用,所以自动连接插槽名称模式 on_<object name>_<signal name>不匹配任何插槽。

将电话转到setupUi在构建计时器并为其命名后:

timer = new QTimer(this);
timer->setObjectName("timerOne");
ui->setupUi(this);

关于c++ - Qt 无法按名称插入,即使在设置了 objectName 之后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31298322/

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