vs2022开发QT6,无需connect函数自动连接槽的技巧

使用vs2022学习开发Qt6时,在vs中打开Designer程序右键无法对CheakBox类使用“转到槽”的命令。查看了其他博主的博客,找到一个比较方便的技巧实现自动转到自定义槽。

首先明确一点,自动自定义槽的命名方式为"on_Qt对象名称_信号名"

我创建的是QtMainWindow类,首先展示一下示例项目,主要使用了3个QCheckBox和1个QPlanTextEdit对象

然后在其中自定义三个符合命名方式的槽函数,例如第一个QCheckBox名字是chkBoxBold,要连接clicked(bool)信号,按照自动命名规则:on_chkBoxBold_clicked,同理命名其他槽函数,QtMainWindow.h的声明应该如下

QtMainWindow.h

public slots:
    void on_chkBoxBold_clicked(bool checked);
    void on_chkBoxItalic_clicked(bool checked);
    void on_chkBoxUnder_clicked(bool checked);

在QtMainWindow.cpp中实现这三个函数

QtMainWindow.cpp

void QtMainWindow::on_chkBoxBold_clicked(bool checked) {
    QFont font = ui.plainTextEdit->font();
    font.setBold(checked);
    ui.plainTextEdit->setFont(font);
}

void QtMainWindow::on_chkBoxItalic_clicked(bool checked) {
    QFont font = ui.plainTextEdit->font();
    font.setItalic(checked);
    ui.plainTextEdit->setFont(font);
}
void QtMainWindow::on_chkBoxUnder_clicked(bool checked) {
    QFont font = ui.plainTextEdit->font();
    font.setUnderline(checked);
    ui.plainTextEdit->setFont(font);
}

需要注意,在vs中创建项目可能是用ui.操作对象而不是ui->操作的,这是创建的时候决定的

在QT Designer中不需要使用编辑信号和槽工具手动连接,否则该信号会执行两次:自动连接一次,手动编辑信号和槽两次

保存文件,然后可以查看效果,点击已经生效

实现猜测:QT 6 C++开发指南中介绍了ui文件中,编译生成的ui_QTMainWindows.h文件中有这样一个函数QMetaObject::connectSlotsByName(QtMainWindowClass),他在setupUi方法中被定义, 能够实现自动关联

技巧到此结束,上面的按钮没有实现互斥有一定缺陷,请读者注意

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值