0


【1期 QT之控件的创建与使用】

前言

QT一开始在1991年被奇趣公司研发,创建的目的就是实现GUI图形界面开发与非GUI的开发。后来被诺基亚收购了,维护至今。当然在诺基亚手里也是越发展越好。
好了QT就介绍这么多了。我们直接上干货:我将从控件的使用方式、QT的信号与槽、项目源码剖析、界面的美化与布局、动画特效处理、音视频播放(有个简单的小项目)、QCharts的使用、网络通讯之TCP&UDP、线程的介绍与实现、结尾(娱乐小项目);会从这10个连载介绍QT。

文章目录


在这里插入图片描述

一、UI创建控件

1.1:从.UI文件中拖拽控件

如下在 .UI 文件中拖出控件至窗体

控件添加

1.2:赋予控件功能(转到槽)

利用转到槽功能实现:点击按钮,关闭窗体的事件

关闭事件

1.3:效果演示

关闭

二、代码创建控件

代码实现控件,需要利用到connect函数进行功能实现。当然控件的库如果不清楚的可以去QT的手册中查询。

2.1:按钮

代码如下(示例):move(设置控件位置) = setGeometry(); settext(设置按钮文本); setFlat(透明背景);

voidMainWindow::PushButton(){//标准按钮只能用键盘中的空格触发
    QPushButton *pushbutton =newQPushButton(this);
    pushbutton->setText("标准按钮");connect(pushbutton,&QPushButton::clicked,this,[=](){qDebug()<<"使用";});//设置默认 可以用回车触发
    QPushButton *pushbutton2 =newQPushButton(this);
    pushbutton2->move(150,0);
    pushbutton2->setText("默认按钮");
    pushbutton2->setDefault(true);connect(pushbutton2,&QPushButton::clicked,this,[=](){qDebug()<<"使用2默认";});//设置自动默认 可以用回车触发
    QPushButton *pushbutton3 =newQPushButton(this);
    pushbutton3->move(300,0);
    pushbutton3->setText("自动默认按钮");
    pushbutton3->setAutoDefault(true);connect(pushbutton3,&QPushButton::clicked,this,[=](){qDebug()<<"这是一个自动默认按钮";});
    pushbutton2->setFlat(true);//透明背景}

2.2:文本框

代码如下(示例):QIntValidator (验证器) setMaxLength(限制位) append(追加文本)

voidMainWindow::TextBox(){//单行文本
    QLineEdit *lineedit =newQLineEdit(this);
    lineedit->setGeometry(0,50,100,50);
    QIntValidator *val=newQIntValidator(0,3,this);//验证器:设置显示整数,并且有效的展示3位数
    lineedit->setValidator(val);
    lineedit->setInputMask("HHH.HHH.HHH.HHH");//进行设置标记
    lineedit->setMaxLength(10);//限制输入10位数//lineedit->setEchoMode(QLineEdit::Password);     //设置密码显示//多行文本
    QTextEdit *textEdit =newQTextEdit(this);
    textEdit->setGeometry(110,50,100,100);
    textEdit->setText("第一行内容<br/>第二行内容");//利用HTML的语法进行切换
    textEdit->append("第三行内容\n第四行内容");//追加利用\n进行切换//纯文本 不允许HTML语言
    QPlainTextEdit *PlainTextEdit =newQPlainTextEdit(this);
    PlainTextEdit->setGeometry(220,50,100,100);
    PlainTextEdit->setPlainText("第一行内容\n第二行内容");}

2.3:进度条

代码如下(示例):QProgressBar

//进度条voidMainWindow::ProgressBar(){
    QProgressBar *progressbar =newQProgressBar(this);
    progressbar->setMaximum(100);//设置最大值
    progressbar->setMinimum(0);//设置最小值
    progressbar->setValue(50);//设计基础值
    progressbar->setGeometry(50,160,300,20);//设置位置与大小
    progressbar->setOrientation(Qt::Horizontal);//设置方向 Vertical垂直的
    progressbar->setInvertedAppearance(true);//外观倒置//设置文本内容
    QProgressBar *progressbar2 =newQProgressBar(this);
    progressbar2->setTextVisible(true);//文本框显示
    progressbar2->setAlignment(Qt::AlignRight);
    progressbar2->setMaximum(100);//设置最大值
    progressbar2->setMinimum(0);//设置最小值
    progressbar2->setValue(50);//设计基础值
    progressbar2->setGeometry(50,190,300,20);//设置位置与大小
    progressbar2->setFormat(QString("重量:%1KG").arg(QString::number(30.22,'f',2)));}

2.4:列表型控件

代码如下(示例):QListWidget QTreeWidget QTableWidget

voidMainWindow::ListContorl(){//与之配合 QListWidgetItem
    QListWidget *listWdiget =newQListWidget(this);
    listWdiget->setGeometry(0,300,250,200);//行:两种添加字符的方法
    listWdiget->addItem("hello");
    listWdiget->addItem(newQListWidgetItem(" QT "));
    listWdiget->addItem("☺");//设置视图模式
    listWdiget->setViewMode(QListView::IconMode);
    QLabel *label =newQLabel(this);
    label->setGeometry(0,610,250,200);connect(listWdiget,&QListWidget::currentTextChanged,label,&QLabel::setText);//获取选中文本内容//treewidget 与之配合 QTreeWidgetItem 要有:标题、根、子节点(项目)
    QTreeWidget *treewidget =newQTreeWidget(this);
    treewidget->setGeometry(270,300,250,200);//设置树的头 如果只有一个头就用 setHeaderLabel()
    QStringList head;
    head<<"科目"<<"分数";
    treewidget->setHeaderLabels(head);//添加根节点
    QStringList name;
    name<<"QT";
    QTreeWidgetItem *root =newQTreeWidgetItem(treewidget,name);//注意这里是继承的关系//添加子节点
    QStringList score;
    score<<"数学"<<"100";
    QTreeWidgetItem *node =newQTreeWidgetItem(root,score);//这里是继承上面的根节点//因为是树形结构所以我们在添加一个节点
    root->addChild(node);//tabwidget  与之配合 QTableWidgetItem 他是一个表格控件 设置行列数量 在设置标题
    QTableWidget *tablewidget =newQTableWidget(this);
    tablewidget->setGeometry(540,300,250,200);
    tablewidget->setRowCount(3);//设置行数
    tablewidget->setColumnCount(3);//设置列数
    QStringList tablewidgettitle;
    tablewidgettitle<<"姓名"<<"性别"<<"年龄";
    tablewidget->setHorizontalHeaderLabels(tablewidgettitle);//设置title//设置内容
    tablewidget->setItem(0,0,newQTableWidgetItem("小孩"));
    tablewidget->setItem(0,1,newQTableWidgetItem("男"));
    tablewidget->setItem(0,2,newQTableWidgetItem("15"));}

2.5:调整框与滚动条

代码如下(示例):QSpinBox QSlider

voidMainWindow::SpinBox_And_Slider(){//调整框
    QSpinBox *spinbox =newQSpinBox(this);
    spinbox->setMaximum(100);
    spinbox->setMinimum(0);
    spinbox->setGeometry(50,250,100,30);
    spinbox->setAccelerated(true);//设置增快 按下时间越长,增长速度越快
    spinbox->setSingleStep(5);//设置步长 一次走几个数字
    spinbox->setWrapping(true);//走到最大值或最小值后可以滚动回来
    spinbox->setPrefix("前缀");//设置前缀
    spinbox->setSuffix("后缀");//设置后缀//实现功能利用调整框将进度条绑定connect
    QSlider *slider =newQSlider(this);
    slider->setGeometry(160,250,200,30);
    slider->setMinimum(0);
    slider->setMaximum(100);
    slider->setOrientation(Qt::Horizontal);//设置横向
    slider->setSingleStep(5);//设置步长//    connect(spinbox,&QSpinBox::valueChanged,this,[=](int x){//        slider->setValue(x);//    });//    connect(slider,&QSlider::valueChanged,this,[=](int x){//        spinbox->setValue(x);//    });//上面为lambda表达式!不推荐connect(spinbox,&QSpinBox::valueChanged,slider,&QSlider::setValue);connect(slider,&QSlider::valueChanged,spinbox,&QSpinBox::setValue);}

2.6:效果演示

在这里插入图片描述


总结

QT的基础功能网上也有很多教程,以上代码也是在很久以前总结的(可以实现) 注意别忘了

头文件

在学习的过程中,要实际上手敲一敲才会印象深刻,也才能发现没有体现的错误。
如果在实现上出现了问题,欢迎大家留言,会一一解答。

在我学习过程中觉得:有图形拖拽了我干嘛还要学习代码实现控件呢?多此一举么不是,还这么麻烦!当然了技多不压身么,代码实现相对于会更灵活。对于后面的自会控件也是起到了重要的作用。

标签: qt ui 开发语言

本文转载自: https://blog.csdn.net/weixin_46076132/article/details/126153498
版权归原作者 矩阵君 所有, 如有侵权,请联系我们删除。

“【1期 QT之控件的创建与使用】”的评论:

还没有评论