一些小问题总结(一)2021年1季度

1、有可能多个 Object的signal会连接到同一个slot函数上(例如多个Button的clicked信号可能会connect到一个slot函数onClick()),

因此这是就 需要判断到底是哪个Object emit了这个signal,根据sender的不同来进行不同的处理.

在槽函数中:加入操作不同Object。

QObject * obj = sender(); //返回发出信号的对象,用QObject类型接收
QPushButton *button_tmp = qobject_cast<QPushButton *>(obj);  //向下转型为按钮类型

2、Qt5 中显示中文的问题:

QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312"));
//多字符
tr("字符串")

3、Qt5 中出现头文件找不到的问题:

由于Qt5将大部分桌面部件移到了Qt Widgets模块中,所以在.pro中要增加下面一行

QT += widgets

4、Qt5 中用新版C++:

为了充分使用C++11特性,在.pro中加下面一行

CONFIG += c++11

5、Qt控件的头文件如果觉得加的麻烦的话直接引用#include<QtWidgets>这个。

6、如何设置应用程序图标:
在.pro项目文件中添加一行代码:
RC_ICONS=myico.ico //用自己的.ico图标

7、目前用得比较多的布局是 QGridLayout:

它将界面划分为若干个网格,
而控件可以按需要放到对应的格子,确保了控件的准确定位。
m_layout->addWidget(m_calender,0,0);   //calendar放在第一行第一列
m_layout->addWidget(m_tblList,0,1);   //table放在第一行第二列
但是我们还需要控件在窗体缩放的时候也按比例缩放,
这个时候就需要用到拉伸因子这个东东。拉伸因子决定了窗体尺寸发生改变时,控件发生改变的比例。
每个布局都有相应的拉伸因子设置函数。以下是QGridLayout里面的设置函数
void setColumnStretch ( int column, int stretch );
void setRowStretch ( int row, int stretch );
具体使用如下
m_layout->setColumnStretch(0,3);
m_layout->setColumnStretch(1,1);
这样在窗体反正改变的时候,m_calender与m_tblList会按3:1的比例发生改变。

8、Qt实现页面时调用到父窗口得时候,创建父窗口对象,调用父窗口的构造函数。例如
有一个FileEditor类中有函数:editor();如果你想调用。
先在子窗口头文件定义
FileEditor * sonEditor; 和 tmpeditor();
再在子类的构造函数中实现把父窗口指针传递给子窗口指针:
sonEditor = (FileEditor*)parent;
再实现继承来的函数:
SEditor *sonDialog::tmpeditor()
{
    return sonEditor->editor();
}

9、VS一个比较坑的编码设置:
当你的代码出现为定义的字符出现错误C2001时,或者”字符中存在不被期望的换行符“错误

可以新检查一下文件的保存编码
*VS有一个高级保存设置,如果提示你字符未定义,可以重新保存一下编码
string就能识别utf-8的中文,别的编码的中文能VS部分识别

10、
在用vs编译项目时会出现很多warning和error,而大多数的warning
是可以忽略的,再编译一次项目就可以快速的显示error

11、LNK2019error:
动态库编程,需要在实现的类中将函数导出
用关键字:__declspec(dllexport)
动态库的问题,实现的类要用关键字__declspec导出,不然调用类生成对象的时候,函数名会无法解析

这个错误的原因千奇百怪好吧,这只是其中之一。

12、注意申请空间:
如果出现访问异常(卡出bug了),虽然之前可以编译,但是跑的时候就崩了

通常就是没有赋空间,如果不想给空间,那就给null。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值