QMainWindow以及控件学习笔记

QMainWindow以及控件学习笔记

tips

信号和槽的连接方式

我们都知道在QT中呢,要让一些控件做出处理,那么就要用到信号和槽了,来进行处理一些事件,就好比如:

QPushButton *b = new QPushButton(this);
b->setText("btn");
connect(b,&QPushButton::clicked,this,&MainWidget::mySlot);

void MainWidget::mySlot()
{
    qDebug()<<"你点击了btn按钮";
}

这个呢就是一点击这个QPushhButton控件,就会Debug“你点击了btn按钮”,可是我们还可以用Lambda表达式,是匿名函数对象,配合信号来使用,而且也更方便,因为它是c++11增加的新特性,所以要在项目文件要加上:CONFIG += C++11。

Lambda表达式:
QPushButton *b3 = new QPushButton(this);
b3->setText("Lambda");
connect(b,&QPushButton::clicked,
				 []()
            {                
                qDebug()<<"Lambad";
            }
            );

1.1菜单栏最多有一个

​ 1.1.1QMenuBar* bar=MenuBar();
​ 1.1.2 setMenuBar(bar)+
​ 1.1.3QMenu *fileMenu =bar->addMenu("文件”)创建菜单

​ 1.1.4QAction*newAction=fileMenu->addAction("新建”);创建菜单项
​ 1.1.5添加分害割线 fileMenu->addseparator();

1.2工具栏 可以有多个

1.2.1 QToolBar*toolbar=new QToolBar(this);
1.2.2 addToolBar(默认停靠区域,toolbar);比如Qt::LeftToolBarArea//设置默认停靠在左边
1.2.3 设置后期停靠区域,设置浮动,设置移动

如toolbar->setFloatable();//设置浮动可否

toolbar->setMoveable();//设置移动可否

1.2.4添加分割线 toolbar->addseparator();

1.2.5 添加菜单项 或者添加小控件;

比如添加pushbutton

QPushButton * btn=new QPushButton(“aa”,this);

toolBar->addwidget(btn);

1.2.6 工具栏中设置内容 toolbar->addAction(newAction);

1.3状态栏最多一个

1.3.1 QStatusBar*stBar = statusBar();
1.3.2 设置到窗口中 setStatusBar(stBar);…
1.3.3 方标签控件QLabel * label = new QLabel(“提示信息”,this)

stBar->addWidget(label);放左侧信息

1.3.4stBar->addPermanentwidget(label);放右侧信息

1.4铆接部件浮动窗口可以多个

1.4.1 QDockWidget * dockWidget = new QDockWidget(“浮动”,this);
1.4.2 addDockWidget(停靠区域,浮动窗口指针_)
1.4.3设置后期停靠区域 dockWidget->setAllowedAreas

1.5设置核心控件 只能一个

1.5.1 //以文本编辑框为例

QTextEdit * edit = new QTextEdit(this);

setCentral widget(edit)

2.资源文件

2.1将图片文件拷贝到项目位置下
2.2右键项目->添加新文件一>QT->QTresourceFile->给资源文件起名
2.3 .qrc文件
2.4 open in editor 编辑资源
2.5添加前缀 添加文件
2.6使用“:+前缀名+文件名”

2.7添加资源文件过大会编译不过,在工程pro文件中添加CONFIG += resources_big即可

3.对话框

使用对话框要包含其对应的头文件

3.1分类:

3.1.1模态对话框 不可以对其他窗口进行操作阻塞
3.1.1.1 QDialog dlgt(this)
3.1.1.2 dlg.exec();
3.1.2非模态对话框 可以对其他窗口进行操作
3.1.2.1防止一闪而过创建到堆区
3.1.2.2 QDialog*dlg=new QDialog(this);
3.1.2.3 dlg->show();
3.1.2.4 dlg2->setAttribute(Qt:WA.DeleteOnclose);/55号属性,关闭对话框就释放内存

3.2标准对话框-消息对话框

3.2.1 QMessageBox 静态成员函数创建对话框
3.2.2 错误、信息、提问、警告
3.2.3 参数1父亲 参数2标题 参数3显示内容 参数4按键类型 参数5默认关联回车按键
3.2.4 返回值也是standardputton类型,利用返回值判断用户的输入

调用方式:

//错误对话框
QMessageBox::critical(this,"critical""错误");
//信息对话框
QMessageBox::information(this,"info""信息");
//提问对话框
//参数1父亲 参数2标题 参数3提示内容 参数4按键类型 参数5默认关联回车按键
QMessageBox::question(this,"ques""提问",QMessageBox::Save |QMessageBox::Cance1,QMessageBox::Cance1)
//警告对话框
QMessageBox::warning(this,"warning""警告");

3.3其他标准对话框

3.3.1颜色对话框QColorDialog::getcolor
3.3.2文件对话框QFileDiglog:getOpenfileName(父亲,标题,默认路径,过滤文件)
3.3.3字体对话框 QFontDialog::getFont

4界面布局

4.1实现登陆窗口
4.2利用布局方式给窗口进行美化
4.3选取widget 进行布局,水平布局、垂直布局、栅格布局
4.4给用户名、密码、登陆、退出按钮进行布局

4.5默认窗口和控件之间有9间隙,可以调整 layoutLeftMargin
4.6利用弹蓄进行布局

5控件

5.1按钮组

5.1.1QPushButton 常用按钮
5.1.2 QToolButton工具按钮用于显示图片,如图想显示文字,修改风格:
toolButtonstyle,凸起风格autoRaise"
5.1.3 radioButton 单选按钮,设置默认ui->按钮名>setChecked(true);
5.1.4 checkbox多选按钮,监听状态,2选中 1半选 0未选

5.2QListWidget 列表容器

5.2.1QListWidgetltem*item 一行内容
5.2.2 ui->listWidget->additem(item)
5.2.3设置居中方式 item->setTextAlignment(Qt::AlignHCenter);
5.2.4可以利用addltems一次性添加整个诗内容

//QstringList = QList<Qstring>
QStringList list;
1ist<<"锄禾日当午"<<"旱地和下土"<<"谁知盘中餐"<<”粒粒皆辛苦";
    ui->listwidget->addItems(list)

5.2.5双击编辑框可以直接添加,点击属性可以修改字体和居中

5.3QTreewidget 树控件

5.3.1设置头

5.3.1.1ui->treewidget->setHeaderLabelst(Qstringlist()<<“英雄”<<“英雄介绍”);

5.3.2创建根节点

5.3.2.QTreewidgetItem*liltem=new QTreeWidgetitem(Qstringlist()<<”力量
");

5.3.3添加根节点到树控件上

5.3.3.1 ui->treeWidget->addTopLeveltem(liItem);

5.3.4添加子节点

5.3.4.1 liltem->addChild(QTreeWidgetItem * l1);

5.3.5

也可以直接双击控件在控件里设置

5.4QTableWidget 表格控件

5.4.1设置列数
5.4.1.1ui->tablewidget->setColumnCount(3)
5.4.2设置水平表头
5.4.2.1 ui->tablewidget->setHorizontalHeaderLabels(QStringList()<<“姓名”<<“性别“<<“年龄”);
5.4.3设置行数
5.4.3.1 ui->tableWidget->setRowCount(5);
5.4.4设置正文
5.4.4.1ui->tableWidget->setItem(0,0,new QTableWidgetItem(“亚瑟”));第0行第0列新建一个容器装”亚瑟“放进表格里

QStringList nameList;
nameList<<"亚瑟"<<"赵云"<<”张飞<<”关羽”<<“花木兰";
QList<Qstring>sexList;//两种声明方式等价
sexList<<"男<<”男<<“男<<“男<<“女";
for(int i=0;i<5;i++)
{
	int col=0;
    ui->tablewidget->setItem(i,col++,new QTableWidgetItem(nameList[i]));//用[]访问内存不足不会报错
   	ui->tableWidget->setItem(i,col++,new QTableWidgetItem(sexList.at(i)));//用.at()访问内存不足会报错
	//int转Qstring 
  	ui->tablewidget->setItem(i,col++,new QTableWidgetItem(QString::nudber(i+18));
}

5.4.5可以双击窗口进行相关设置

5.5其他控件介绍

5.5.1 stackedWidget 栈控件
5.5.1.1ui->stackedwidget->setCurrentlndex(1);

栈控件一般要搭配按钮进行换页

5.5.2下拉框
5.5.2.1ui->comboBox>addltem(“奔驰”);
5.5.3QLabel 显示图片
5.5.3.1ui->lbI_mage->setPixmap(QPixmap(":/Image/butterflypng"));
5.5.4QLabel显示动图 gif图片
5.5.4.1ui>lbl_movie->setMovie(movie);
5.5.4.2 movie->start();

5.6自定义控件封装

1.1添加新文件-Qt-设计师界面类(.h.cpp.ui)
1.2ui中设计 QSpinBox和QSlider 两个控件

1.3 Widget 中使用自定义控件,拖拽一个Widget,点击提升为,点击添加,点击提升

image-20210811171820603

两边基类相同才能提升成功

1.4实现功能,改变数字,滑动条跟着移动,信号槽监听。

connect(ui->spinBox,spsignal,ui->horizontalSlider,&QSlider::setValue);
connect(ui->horizontalSlider,&QSlider::valueChanged,ui->spinBox,&QSpinBox::setValue);

1.5提供getNum 和setNum对外接口
1.6测试接口

返回值都是void   作用域是QSpinBox::   起名字叫spsignal   参数是int类型//函数指针
                           void (QSpinBox:: * spsignal)(int) = QSpinBox::valueChanged;

当信号函数发生重载时可以传函数指针

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

hgchshs

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

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

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

打赏作者

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

抵扣说明:

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

余额充值