qt基础1

刚开始接触qt的界面编程,vs2013+qt5.6,在vs2013中新建工程,在码QT5的第一章代码时遇到几个问题:
第一:中文显示,书上直接是 :
label1->setText(tr(“请输入圆的半径:”));button->setText(tr(“显示对应圆的面积”));
这样我编译完出现乱码了。查网上资料:QObject::tr是用于程序国际化使用的,也就可以界面文字翻译成不同的语言。你如果使用QObject::tr,你应该全部用英文表示,然后后面借助Linguist翻译成中文,就不会乱码了。显然,我不会用这个,直接用QStringLiteral换掉tr就ok。
label1->setText(QStringLiteral(“请输入圆的半径:”));

第二:在dialog.h中,class Dialog : public QDialog下定义praivte:slot,cpp文件调用时需要添加dialog::的标识。这应该是C++中类的调用手法。(原谅我C/C++很渣)

第三:就是知识点的累计了,布局管理器,所有空间的位置固定;
QGridLayout *mainlayout = new QGridLayout(this);
mainlayout->addWidget(label1, 0, 0);
mainlayout->addWidget(lineEdit, 0, 1);
mainlayout->addWidget(label2, 1, 0);
mainlayout->addWidget(button, 1, 1);
对于布局,我还是有点懵,第一个参数是表示命令名,第二个分别是行,列。具体可以参考资料【1】Qt之格栅布局(QGridLayout)。
QWidget::setLayout(…)将布局管理器添加到对应的窗口部件对象中。因为这主窗口就是父窗口,所以直接调用setLayout即可

信号槽机制,用connect来连接。
//connect(lineEdit, SIGNAL(textChanged(QString)), this, SLOT(showArea()));
connect(button, SIGNAL(clicked()), this, SLOT(showArea()));
这是两种,注释掉的一种是直接在lineEidt中输入参数就可以得到面积,另外一种就是在lineEdit中输入参数之后,按一下button才能显示面积。
信号与槽机制:
一个信号与另一个信号相连:
connect(Object1,SIGNAL(signal1),Object2,SIGNAL(signal1));
一个信号发送多个槽相连:
connect(Object1,SIGNAL(signal1),Object2,SIGNAL(slot1));
connect(Object1,SIGNAL(signal1),Object3,SIGNAL(slot2));
同一个槽响应多个信号
connect(Object1,SIGNAL(signal1),Object2,SIGNAL(slot2))
connect(Object2,SIGNAL(signal1),Object2,SIGNAL(slot2))
常用的连接方式
connect(Object1,SIGNAL(signal),Object2,SIGNAL(slot))

Qt元对象系统提供了对象间的通信机制(信号与槽)、运行时类型信息和动态属性系统的支持,是C++的一个扩展。 基于以下三个事实:
1、基类QObject,任何需要使用元对象系统功能的类必须继承自QObject;
2、Q_OBJECT宏,必须出现在类的私有声明区,用于启动对象的特性;
3、元对象编译器(Meta-Object Complier,moc)为QObject子类实现元对象特性提供必要的代码实现。

// QT中提示符号表示的含义
在这里插入图片描述

参考资料【1】:
Qt之格栅布局(QGridLayout):
http://www.2cto.com/kf/201605/513687.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值