Qt学习小结(一)

1.用户类声明

使用信号槽必须加宏: Q_OBJECT

【C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的, 跟它相对应的另一个关键字是implicit, 意思是隐式的,类构造函数默认情况下即声明为implicit(隐式).】

2.主函数部分

3. 配置文件.pro文件

4.如果窗口需要依附于另一个窗口,则需要给该窗口指定父类。

5. 从QObject类派生而来的类,具有内存自动回收机制。(父类析构时,先析构子类)

6. 信号和槽函数

【在qt5中槽函数可以是任意类成员函数,全局函数,静态函数,lambda表达式(隐式函数)】

connect(&信号发出对象,&发出的信号,&信号接受对象,&处理信号的槽函数);

    //connect(对象,发出的信号,对象,处理信号的槽函数);
    connect(&b1,&QPushButton::clicked,this,&MyWidget::close);

槽函数的特性:

(1)槽函数没有返回值;

(2)槽函数需要与信号函数对应;

(3)槽函数的参数 是为了接收信号传过来的数据;

(4)参函数的参数应该是不大于信号参数的个数,可以少于;

(5)槽函数可以重载;

7.信号函数

//发送信号
emit sigSub();

8.函数指针

int f(int a, long b);

int (*fp)(int, long) = f;

9.Qstring类型转换

Qstring--->char*

Qstring str;
str.toUtf8().data();

string--->char*

std::string str;
str.c_str();

10.信号和槽函数可以重载,重载时需要使用函数指针。

11.同一个信号可以连接多个槽,connect可以信号连接信号。

12.对话框

模态对话框:

dlg.exec();//阻塞

非模态对话框:

dlg.setAttribute(Qt::WA_DeleteOnClose);
dlg->show();     //非阻塞(/|\保证完成工作之前不被析构)

提示对话框:

#include <QMessageBox>

QMessageBox::about(this,"Tips","hello");
if(QMessageBox::Ok == QMessageBox::question(this,"Tips","hello",QMessageBox::Ok|QMessageBox::Cancel))
{

}

13.设置停靠窗口
 

	//设置停靠窗口
QDockWidget *dockWidget = new QDockWidget(tr("Dock Widget"), this);
dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea);
addDockWidget(Qt::LeftDockWidgetArea, dockWidget);

14.动态修改CentralWidget

centralWidget()->setParent(0);
//新的CentralWidget
setCentralWidget(_newCentral);

15.分裂器

	QSplitter *splitter= new QSplitter;
	splitter->addWidget(t_widget);
	splitter->addWidget(p_widget);
	splitter->setStretchFactor(1,3);
	splitter->show();
    //setCentralWidget(splitter);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值