目录
一.将exe独立打包使用
目的减小文件大小,方便文件的传输
步骤:
1.把debug中的exe文件单独提取出来,放在一个单独的文件夹当中
2.用qtfordesktop进行配置qt环境
windeployqt.exe untitled4.exe
二、qt类的介绍
我最先接触的是QWidget类
qt中最基本的类有:QObject
QWidget、QLayout、QTcpSocket都是QObject的派生类
QString、QColor等是非QObject的派生类
三、基本对话框
bt_filename = new QPushButton("打开文件");bt_getcolor = new QPushButton("颜色按钮");
bt_getfont = new QPushButton("获取字体");
bt_getinput = new QPushButton("获取输入");
bt_error = new QPushButton("错误弹框");
bt_message = new QPushButton("消息弹框");
bt_progress = new QPushButton("进度条对话框");
1. 文件对话框( QFile Dialog)
2.颜色对话框( QColorDialog)
3.字体对话框( QFontDialog)
4.输入对话框( QInputDialog)
5.错误消息弹框( QErrorMessage)
6.消息弹框(QMessageBox)
7.进度框消息弹框(QProgressDialog)
//文件对话框示例
connect(bt_filename, &QPushButton::clicked, [&](){
//提取单个文件名的对话框
//QString filename = QFileDialog::getOpenFileName();
//te_test->append(filename);
//提取多个文件名的对话框
QStringList filenames = QFileDialog::getOpenFileNames(this, "打开图片", ".", "Images (*.png *.xpm *.jpg)");
for(int i=0; i<filenames.length(); i++)
te_test->append(filenames[i]);
});
//颜色对话框示例
connect(bt_getcolor, &QPushButton::clicked, [&](){
QColor color = QColorDialog::getColor();
te_test->setTextColor(color);//设置文本颜色
});
//字体对话框示例
connect(bt_getfont, &QPushButton::clicked, [&](){
bool ok;
QFont font = QFontDialog::getFont(&ok);
if(ok) //用户选择了字体
te_test->setCurrentFont(font);
});
//输入对话框示例
connect(bt_getinput, &QPushButton::clicked, [&](){
QString str = QInputDialog::getText(this, "输入框", "请输入您的姓名");
te_test->setText(str);
});
//错误弹窗示例
connect(bt_error, &QPushButton::clicked, [&](){
QErrorMessage *x;
x->showMessage("未知错误提示,程序崩溃");
});
//消息弹窗示例
connect(bt_message, &QPushButton::clicked, [&](){
QMessageBox::warning(this, "消息提示框", "Giant--fox", QMessageBox::Close, QMessageBox::Apply);
});
//进度条对话框示例
connect(bt_progress, &QPushButton::clicked, [&](){
QProgressDialog x;
x.setValue(60);
x.exec();
});
四、垂直布局管理器
QVBoxLayout 垂直布局
垂直布局---常用接口:
addStretch();//添加一个可伸缩空间
addSpacing(int size);//添加一个固定size 大小的间距
setMargin(int);//setMargin可以设置左、上、右、下的外边距,设置之后,他们的外边距是相同的
//与setMargin功能相同,但是可以将左、上、右、下的外边距设置为不同的值
setContentsMargins(int left, int top, int right, int bottom );
setContentsMargins(const QMargins &margins); 设置外边距
addWidget(QWidget *, int stretch = 0, Qt::Alignment alignment = 0) //添加控件
默认的,我们添加控件至水平布局中,默认都是垂直方向居中对齐的。
setDirection(QBoxLayout::RightToLeft)//设置布局方向
setStretchFactor(QWidget *w, int stretch);//设置控件、布局的拉伸系数
setStretchFactor(QLayout *l, int stretch);
QHBoxLayout 水平布局
水平布局---常用接口:
addStretch();//添加一个可伸缩空间
addSpacing(int size);//添加一个固定size 大小的间距
setMargin(int);//setMargin可以设置左、上、右、下的外边距,设置之后,他们的外边距是相同的
//与setMargin功能相同,但是可以将左、上、右、下的外边距设置为不同的值
setContentsMargins(int left, int top, int right, int bottom );
setContentsMargins(const QMargins &margins); 设置外边距
addWidget(QWidget *, int stretch = 0, Qt::Alignment alignment = 0) //添加控件
默认的,我们添加控件至水平布局中,默认都是垂直方向居中对齐的。
setDirection(QBoxLayout::RightToLeft)//设置布局方向
setStretchFactor(QWidget *w, int stretch);//设置控件、布局的拉伸系数
setStretchFactor(QLayout *l, int stretch);
五、QLineEdit组件和QCheckBox组件
做一个简易的输入密码登录器
QLineEdit的常用接口:
1.获取输入内容
QString text = lineEdit->text(); // 获取文本内容
lineEdit->setText("New text"); // 设置文本内容
2.获取占位符和设置占位符
QString placeholderText = lineEdit->placeholderText(); // 获取占位文本
lineEdit->setPlaceholderText("Enter text here"); // 设置占位文本
3.设置输入限制
lineEdit->setMaxLength(10); // 设置最大输入字符数为10
lineEdit->setValidator(new QIntValidator(0, 100, this)); // 设置只能输入0到100之间的整数
4.其他操作
lineEdit->setReadOnly(true); // 设置为只读模式
lineEdit->setEchoMode(QLineEdit::Password); // 设置为密码输入模式
lineEdit->selectAll(); // 选中所有文本
lineEdit->setCursorPosition(5); // 设置光标位置为第5个字符
可以与标准对话框结合起来,当输入正确时弹出提示:
六、输出部件类
1.标签显示文字、图片以及Qpixmap相关操作
QPixmap相关用法
1.加载图片
QPixmap pixmap;
pixmap.load("image.png"); // 加载图片
2.显示图片
QLabel* label = new QLabel(this); // 创建标签
label->setPixmap(pixmap); // 设置标签的图片
3.缩放图片
QPixmap scaledPixmap = pixmap.scaled(100, 100, Qt::KeepAspectRatio); // 将图片缩放到100x100像素,并保持原始宽高比
4.旋转图片
QPixmap rotatedPixmap = pixmap.transformed(QTransform().rotate(90)); // 将图片顺时针旋转90度
5.获取图片像素
QRgb pixel = pixmap.toImage().pixel(10, 10); // 获取图片第(10,10)像素的RGB值
6.保存图片
pixmap.save("image.png"); // 将当前Pixmap保存为图片label->setScaledContents(true); 大小匹配
2.图形视图框架--日历
QCalendarWidget是日历的类名
创建和使用也很简单
七、QT其他部件
1.group box组合框
2.滚动管理窗
3.tool 工具箱
4.tab widget选项卡
//widget.cpp
#include "widget.h"
#include <QTabWidget>
#include <QVBoxLayout>
#include <QDebug>
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
te_test1 = new QTextEdit("xxxxxxxxxxxxxxxxx\nxxxxxxxxxx\nxxxx");
te_test2 = new QTextEdit("yyyyyyyyyyyyy\nyyyyyyyyyy\nyyyyyyyyyy");
QTabWidget *tb = new QTabWidget;
tb->setTabsClosable(true);
tb->addTab(te_test1, "1.c");
tb->addTab(te_test2, "2.c");
connect(tb, &QTabWidget::tabCloseRequested, [&](int x){
qDebug()<<"xxx"<<x;
});
QVBoxLayout *vbox = new QVBoxLayout;
vbox->addWidget(tb);
setLayout(vbox);
}
Widget::~Widget()
{
}
5.QStackedwidget
QComboBox是Qt中的一个组件,它是一个下拉列表框,允许用户从预定义的选项中选择一个值。它通常用于允许用户选择从一组选项中选择一个选项的情况。QComboBox提供了一种方便的方法来显示和编辑一组选项,并且可以通过连接到其信号和槽来响应用户的选择。它可以与其他Qt组件(如QLineEdit和QPushButton)一起使用,以实现更复杂的用户界面。