QT学习记录

本文总结了Qt编程中的一些常见问题,包括错误使用未声明的标识符、UI文件的继承与使用、tar命令错误、信号槽机制的两种写法、QTimer的类型判断以及结构体中的qDebug输出。同时,提到了.pro文件中相对路径的注意事项和mutex线程加锁、信号量在多线程同步中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、在 QtCreator 中错误使用未声明的标识符“主窗口”语义问题(error use of undeclared identifier ‘mainwindow’)

解决:在help-about plugins中取消勾选ClangCodeModel
在这里插入图片描述

2、可以继承ui.h文件,在cpp文件中不用写ui->控件

在这里插入图片描述

3、tar -invalid options-

复制导致的问题重新手打一遍即可

4、信号槽

Qt中提供了信号和槽机制用于完成界面操作的响应,信号和槽是完成任意两个Qt对象之间通信的机制。
最常用的连接方式:(qt4写法)

connect(Object1,SIGNAL(signal),Object2,SLOT(slot));

qt5写法:

connect(taxFileButton, &QPushButton::clicked,signalMapper, &QSignalMapper::map)

信号槽绑定时,需要先声明槽函数,然后实现槽函数,最后使用 connect() 绑定起来,而且在 connect() 的时候如果槽函数写错了编译时不会报错,只有在 Debug 模式下运行时才会提示槽函数不存在,Release 模式下运行时不会给予任何错误提示。
Qt 5 使用 C++11 支持 Lambda 表达式,connect() 的时候如果函数名写错了就会在编译时报错,还有一点是 Lambda 表达式在需要的时候才定义,不需要声明,写起来比较简单。
Lambda 表达式可以理解为匿名函数,比如代码里有一些小函数,而这些函数一般只被调用一次(比如函数指针)

connect(cancelAction, &QAction::triggered, this, [=](){
       ui->textEdit->undo();
    });

在这里插入图片描述

注:在老代码中还有这种写法(神奇:
在这里插入图片描述

5、定时器

可以用用定时器的inherits判断是否属于某种类

QTimer *timer = new QTimer;         // QTimer inherits QObject
timer->inherits("QTimer");          // returns true
timer->inherits("QObject");         // returns true
timer->inherits("QAbstractButton"); // returns false

6、在结构体中qDebug输出自定义的信息。(也可以自己封装tostring方法)

struct FunctionInfo {
    QString function;
    QString name;
    QString groupEnabled;
    QString action;
    QString group;

    friend QDebug operator << (QDebug debug, const FunctionInfo &functionInfo) {
        QString info = QString("功能: %1  名称: %2  启用: %3  方法: %4  分组: %5")
                       .arg(functionInfo.function).arg(functionInfo.name).arg(functionInfo.groupEnabled)
                       .arg(functionInfo.action).arg(functionInfo.group);
        debug << info;
        return debug;
    }
};

7、.pro文件相对路径踩坑

注:在项目的.pro文件中相对路径的起点不都是pro文件

其中INCLUDEPATH中的相对路径的起点是相对pro文件的;
在这里插入图片描述
但是动态库文件、生成的dubug文件等这些的相对路径起点是构建目录的(project中的bulid directory)
在这里插入图片描述

mutex 线程加锁
信号量,实现线程同步
qsemaphore

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HSMgogogo!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值