Qt学习1

目录

一.将exe独立打包使用

二、qt类的介绍

三、基本对话框

        1. 文件对话框( QFile Dialog)

        2.颜色对话框( QColorDialog) 

        3.字体对话框( QFontDialog)

        4.输入对话框( QInputDialog)

        5.错误消息弹框( QErrorMessage)

        6.消息弹框(QMessageBox)

        7.进度框消息弹框(QProgressDialog)

四、垂直布局管理器

五、QLineEdit组件和QCheckBox组件

 六、输出部件类

1.标签显示文字、图片以及Qpixmap相关操作

 2.图形视图框架--日历

七、QT其他部件

1.group box组合框

2.滚动管理窗

3.tool 工具箱

4.tab widget选项卡

5.QStackedwidget


一.将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)一起使用,以实现更复杂的用户界面。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值