当前位置:   article > 正文

QT学习笔记(持续更新)_qt笔记

qt笔记

QT


一、按钮

1.效果

在这里插入图片描述

2.代码

#include<QPushButton>//头文件

myWidget::myWidget(QWidget *parent)
    : QWidget(parent)
{
    //方法1
    QPushButton *btn=new QPushButton;
    //btn->show();//以顶层方式显示
    btn->setParent(this);//在myWidget窗口中
    btn->setText("按钮");//显示文本

    //方法2
    QPushButton * btn2=new QPushButton("按钮2",this);

    btn2->move(100,100);//移动按钮
    resize(600,400);//重置按钮
    setWindowTitle("窗口");//设置窗口标题
    setFixedSize(600,400);//设置窗口固定大小

    //参数:信号发送者  发送的信号(函数的地址) 信号接收者  处理的槽函数(函数地址)   
    connect(btn,&QPushButton::clicked,this,&QWidget::close);
    //功能:点击btn按钮关闭窗口

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

二、自定义信号和槽

1.自定义信号: 写在signals下,void,需要声明,不需要实现,可以有参数,可重载。
2.槽: 写在public下,void,需要声明,需要实现,可有参数,可发生重载。
3.断开信号: disconnect
4.emit: 使用emit关键字发送信号
5.示例关键代码如下:
1.widget.cpp

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    //创建对象
    this->zt=new Teacher(this);
    this->st=new Student(this);

    //不带参数自定义信号和槽
    //连接
   // connect(zt,&Teacher::hu,st,&Student::treat);
    //调用函数
   // classIsOver();

    //带参数
    //函数指针-》函数地址
    void(Teacher::*ts)(QString)=&Teacher::xk;
    void(Student::*ss)(QString)=&Student::treat;
    connect(zt,ts,st,ss);
    classIsOver();
}

void Widget::classIsOver()
{
    //触发信号
    //emit zt->xk();
    emit zt->xk("计算机作业");
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

2.widget.h

#include <QWidget>
#include"teacher.h"
#include"student.h"

class Widget : public QWidget

{
    Q_OBJECT
public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
private:
    Ui::Widget *ui;
    Teacher *zt;
    Student *st;
    void classIsOver();
};
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

3.student.cpp


#include "student.h"
#include<qdebug>
void Student::treat()
{
    qDebug()<<"下课";
}
void Student::treat(QString foodName)
{
    //显示布置“foodName的内容”
   // qDebug()<<"布置"<<foodName;
    
    qDebug()<<"布置"<<foodName.toUtf8().data();
    //QString ->chat *:先转成QByteArray再转chat*,消“”
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

4.teacher.h和student.h

class Teacher : public QObject
{
    Q_OBJECT
public:
    explicit Teacher(QObject *parent = nullptr);
signals:
    //自定义信号,void,需要声明,不需要实现,可以有参数,可以重载

    void xk();
    void xk(QString foodName);

};

class Student : public QObject
{
    Q_OBJECT
public:
    explicit Student(QObject *parent = nullptr);
    //槽函数:void,需要声明,需要实现,可有参数,可发生重载
    void treat();
    void treat(QString foodName);

signals:

};

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

6.效果图:
在这里插入图片描述

三、Lambda表达式

1.表达式

(1) [函数对象参数] (操作符重载函数参数) mutable->返回值{函数体}
(2) [] () {}()

2.函数对象参数

(1)空
(2)= : 值传递,所在作用范围内所有可见局部变量。
(3)&: 引用传递方式,所在作用范围内所有可见局部变量。
(4)this: 所在类中成员变量。
(5)a: 将a按值进行传递。
(6)&a: 将a按引用进行传递。

3.示例:

 //将“下课”按钮-》"lambda"按钮
    [=](){
        btn->setText("lambda");
    }();
  • 1
  • 2
  • 3
  • 4
//演示将(5)a按值传递
 QPushButton *btn2=new QPushButton("a",this);
    this->resize(600,400);
    btn2->move(100,100);
    [btn2](){
        btn2->setText("lambda2");
        //btn->setText("lambda");//’btn‘ is not captured
    }();
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
//输出 ret=100
int ret=[]()->int{return 100;}();
qDebug()<<"ret="<<ret;
  • 1
  • 2
  • 3
 //利用lambda表达式,实现点击按钮,关闭窗口
    QPushButton *btn3=new QPushButton;
    btn3->setText("关闭");
    btn3->move(100,0);
    btn3->setParent(this);
    connect(btn3,&QPushButton::clicked,this,[=](){
        this->close();
        emit zt->xk("计算机");
    });
    //结果:点击”关闭“按钮,窗口关闭并输出(布置 计算机)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

四、QMainWindow

1.菜单栏

(1)效果:
在这里插入图片描述
(2)代码:

#include "mainwindow.h"
#include<QMenuBar>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    resize(600,400);

    //创建菜单栏(最多只能有一个)
    QMenuBar *bar=menuBar();
    setMenuBar(bar);//将菜单栏放入窗口中
    //创建菜单
    QMenu *fMenu=bar->addMenu("文件");
    QMenu *eMenu=bar->addMenu("编辑");

    //创建菜单项(在菜单“文件”下)
    fMenu->addAction("新建");
    fMenu->addSeparator();//添加分割线
    fMenu->addAction("打开");
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

2.工具栏

(1)效果:
在这里插入图片描述

(2)代码:

#include "mainwindow.h"
#include<QMenuBar>
#include<QToolBar>
#include<QDebug>
#include<QPushButton>

//工具栏(可以有多个)
    QToolBar *tBar=new QToolBar(this);
    //将工具栏放在窗口中的左边(Qt::LeftToolBarArea)
    addToolBar(Qt::LeftToolBarArea,tBar);

    //设置只允许左右停靠(默认在窗口中,工具栏可移动到四周停靠)
    tBar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);

    //设置不允许浮动
    tBar->setFloatable(false);

    //设置不能移动(总开关)
    tBar->setMovable(false);

    //设置内容:1.与菜单栏写法一样
    tBar->addAction("新建");
    tBar->addSeparator();
    tBar->addAction("打开");
    //2.和上面菜单公用的写法
    //QAction *newAction=fMenu->addAction("新建");
    //QAction *openAction=fMenu->addAction("打开");
    //tBar->addAction(newAction);
    //tBar->addAction(openAction);

    //添加控件
    QPushButton *btn=new QPushButton("按钮",this);
    tBar->addWidget(btn);//将按钮放入工具栏中
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

3.状态栏

(1)效果:
在这里插入图片描述
(2)代码:

#include<QStatusBar>
#include<QLabel>
#include<QDockWidget>
#include<QTextEdit>

    //状态栏(最多一个)
    QStatusBar *sBar=statusBar();
    setStatusBar(sBar);//放入窗口中
    
    //标签控件
    QLabel *label=new QLabel("提示信息",this);
    sBar->addWidget(label);
    QLabel *label2=new QLabel("提示信息(右)",this);
    sBar->addPermanentWidget(label2);//在右侧加入提示信息

    //铆接部件(浮动窗口) 可以有多个
    QDockWidget *dw=new QDockWidget("浮动窗口",this);
    addDockWidget(Qt::BottomDockWidgetArea,dw);//位于核心/中心的下边
    //设置浮动窗口只允许上下停靠
    dw->setAllowedAreas(Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea);

    //设置中心部件(只能有一个)
    QTextEdit *edit=new QTextEdit(this);
    setCentralWidget(edit);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

五、界面文件

1.添加图标

1.前操作:
首先点击界面文件中XXX.ui进行界面设计,设计如下:在这里插入图片描述
tips:工具栏添加首先只能为英文,需要在右下角框中、text后修改为中文。
2.图标添加:


#include "mainwindow.h"
#include "ui_mainwindow.h"


MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
   // ui->actionnew->setIcon(QIcon("D:/Image/a"));//添加图标


    //使用添加Qt资源
    //1.复制需要的文件-》点击项目(.cpp)右键-》在Explorer中显示-》粘贴
    //2.在Qt项目(总项目)中右键-》添加新文件-》Qt.Qt Resource File-》编辑信息并生产资源文件
    //3.点击资源文件下的XXX.qrc的右键-》Open in Editor-》添加前缀(前缀:/ 或其他)-》添加文件(选种图片后点击打开)
    //4.编译后可出现名为/的文件(图片在里面)
    ui->actionnew->setIcon(QIcon(":/Image/a"));//格式为":+前缀名+文件名"
    ui->actionopen->setIcon(QIcon(":/Image/b"));

}
MainWindow::~MainWindow()
{
    delete ui;
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

3.效果图:
在这里插入图片描述

六、对话框

1.模态和非模态对话框

(1)效果:
在这里插入图片描述
(2)代码:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QDialog>
#include<QDebug>
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //点击新建按钮,弹出一个对话框
    connect(ui->actionnew,&QAction::triggered,[=](){
        //模态对话框(不可以对其他窗口操作,具有阻塞功能)
//        QDialog dlg(this);
//        dlg.resize(200,100);
//        dlg.exec();
//        qDebug()<<"模态对话框阻塞功能测试";

        //非模态对话框(可以对其他窗口操作)
        QDialog *dlg2=new QDialog(this);//防止窗口一闪而过
        dlg2->resize(200,100);
        dlg2->show();
        dlg2->setAttribute(Qt::WA_DeleteOnClose);//防止内存泄漏
    });
}
MainWindow::~MainWindow()
{
    delete ui;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

2.消息对话框

(1)提问对话框效果:
在这里插入图片描述

(2)代码:


#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QDialog>
#include<QDebug>
#include<QMessageBox>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //点击新建按钮,弹出一个对话框
    connect(ui->actionnew,&QAction::triggered,[=](){
        //消息对话框
        //QMessageBox 静态成员函数
        //参数:父亲 标题 提示内容 按键类型 默认关联回车按键
        //1.错误对话框(框名为critical,内容为叉图标和错误文字)
        //QMessageBox::critical(this,"critical","错误");

        //2.信息对话框
        //QMessageBox::information(this,"info","信息");

        //3.提问对话框
        //QMessageBox::question(this,"ques","提问");//(默认显示Yes和No按钮)
        //显示Save和Cancel按钮,设置默认回车按键为Cancel
        //返回值 也是StandardButton类型,利用返回值判断用户的输入
        if(QMessageBox::Save ==QMessageBox::question(this,"ques","提问",QMessageBox::Save|QMessageBox::Cancel,QMessageBox::Cancel))
        {
            qDebug()<<"选择的是保存";
        }
        else
        {
            qDebug()<<"选择的是取消";
        }

        //4.警告对话框
//        QMessageBox::warning(this,"warning","警告");
    });
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40

3.其他


#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QDialog>
#include<QDebug>
#include<QMessageBox>
#include<QColorDialog>
#include<QFileDialog>
#include<QFontDialog>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //点击新建按钮,弹出一个对话框
    connect(ui->actionnew,&QAction::triggered,[=](){
        //其他对话框
        //1.颜色对话框 QColor(r,g,b,透明度)
        //返回值为颜色数值
//        QColor col= QColorDialog::getColor(QColor(135,209,255));
//        qDebug()<<"r="<<col.red()<<",g="<<col.green()<<",b"<<col.blue();

        //2.文件对话框 参数:父亲 标题 默认打开路径 过滤文件格式
        //点击新建,自动打开桌面显示过滤后的txt和文件夹
        //返回值为 选取的路径
//        QString str= QFileDialog::getOpenFileName(this,"打开文件","C:\\Users\\佳\\Desktop","(*.txt)");
//        qDebug()<<str;

        //3.字体对话框
        bool f;
        QFont font=QFontDialog::getFont(&f,QFont("宋体",36));
        qDebug()<<"字体:"<<font.family().toUtf8().data()<<",字号:"<<font.pointSize()<<",是否加粗:"<<font.bold()<<",是否倾斜:"<<font.italic();
    });
}


//QInputDialog        :允许用户输入一个值,并将其值返回
//QMessageBox         :模态对话框
//QPageSetupDialog    :为打印机提供纸张相关的选项
//QPrintDialog        :打印机配置
//QPrintPreviewDialog :打印预览
//QProgressDialog     :显示操作过程
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43

七、ui界面

1.按钮组

(1)QPushButton : 常用按钮
(2)QToolButton: 工具按钮可,用于显示图片
(3)radioButton: 单选按钮
(4)checkbox: 多选按钮,可监听状态
1.界面图:
在这里插入图片描述
2.有关代码:

#include "widget.h"
#include "ui_widget.h"
#include<QDebug>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    //1.设置单选按钮,默认男
    //自定义按钮名:rBtnMan
    ui->rBtnMan->setChecked(true);
    //选中"女"后,打印信息
    connect(ui->rBtnWoman,&QRadioButton::clicked,[=](){
        qDebug()<<"性别:女";
    });

    //2.多选按钮
    //自定义按钮名:cBa
    //输出:2(选中) 0(未选中)
    //1:半选(需要在属性的tristate打勾)
    connect(ui->cBa,&QCheckBox::stateChanged,[=](int state){
        qDebug()<<state;
    });
}
Widget::~Widget()
{
    delete ui;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

八、控件

1.QListWidget控件

(1)效果图:
在这里插入图片描述
(2)代码:

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    //利用listWidget写诗
    //法1:
    QListWidgetItem *item=new QListWidgetItem("长风破浪会有时");
    //将一行诗放入到listWidget控件中
    ui->listWidget->addItem(item);
    item->setTextAlignment(Qt::AlignHCenter);//设置水平居中

    //法2:(缺点:无法设置居中)
    //QStringList QList<QString>
    QStringList list;
    list<<"长风破浪会有时"<<"直挂云帆济沧海";
    ui->listWidget->addItems(list);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

2.QTreeWidget树控件

(1)效果图:
在这里插入图片描述
(2)代码:

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    //treeWidget树控件使用
    //1.设置水平头
    ui->treeWidget->setHeaderLabels(QStringList()<<"诗人"<<"诗人介绍");
    //2.创建根节点
    QTreeWidgetItem *titem =new QTreeWidgetItem(QStringList()<<"唐");
    QTreeWidgetItem *djitem =new QTreeWidgetItem(QStringList()<<"东晋");
    QTreeWidgetItem *sitem =new QTreeWidgetItem(QStringList()<<"宋");
    //3.加载顶层的节点(添加根节点到树控件上)
    ui->treeWidget->addTopLevelItem(titem);
    ui->treeWidget->addTopLevelItem(djitem);
    ui->treeWidget->addTopLevelItem(sitem);
    //4.追加子节点
    QStringList poet1;
    poet1<<"李白"<<"字太白,号青莲居士,诗仙";
    QTreeWidgetItem *l1=new QTreeWidgetItem(poet1);
    titem->addChild(l1);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

3.QTableWidget控件

(1)效果图:
在这里插入图片描述(2)代码:

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    //设置列数
    ui->tableWidget->setColumnCount(3);
    //设置水平表头
    ui->tableWidget->setHorizontalHeaderLabels(QStringList()<<"姓名"<<"性别"<<"年龄");
    //设置行数
    ui->tableWidget->setRowCount(5);

    //设置正文
    //1.设置某个单元格
    //ui->tableWidget->setItem(0,0, new QTableWidgetItem("李白"));

    //2.整体设置
    QStringList nameList;
    nameList<<"李白"<<"杜甫"<<"陶渊明"<<"李贺"<<"李清照";
    QList<QString> sexList;//等于QStringList
    sexList<<"男"<<"男"<<"男"<<"男"<<"女";

    for(int i=0;i<5;i++)
    {
        int col=0;
        ui->tableWidget->setItem(i,col++,new QTableWidgetItem(nameList[i]));//1
        ui->tableWidget->setItem(i,col++,new QTableWidgetItem(sexList.at(i)));//2(1和2可互用)
        //int转QString:QString::number(18)
        ui->tableWidget->setItem(i,col++,new QTableWidgetItem(QString::number(18)));
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

4.其他

(1)栈控件效果图:
在这里插入图片描述
(2)代码:


#include "widget.h"
#include "ui_widget.h"
#include<QMovie>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    //1.栈控件使用
    //设置默认定位scrollArea
    ui->stackedWidget->setCurrentIndex(0);
    //scrollArea按钮
    connect(ui->btn_scroll,&QPushButton::clicked,[=](){
        //CurrentIndex可在ui设计界面查看
        ui->stackedWidget->setCurrentIndex(0);
    });
    //toolBox按钮
    connect(ui->btn_tool,&QPushButton::clicked,[=](){
        ui->stackedWidget->setCurrentIndex(2);
    });
    //TabWidget按钮
    connect(ui->btn_tab,&QPushButton::clicked,[=](){
        ui->stackedWidget->setCurrentIndex(1);
    });

    //2/下拉框
    ui->comboBox->addItem("滑板");
    ui->comboBox->addItem("自行车");
    ui->comboBox->addItem("小电驴");
    //点击按钮 选择自行车选项
    connect(ui->btn_select,&QPushButton::clicked,[=](){
        //法1:
        //ui->comboBox->setCurrentIndex(1);
        //法2:
        ui->comboBox->setCurrentText("自行车");
    });

//    //利用Qlable显示图片
//    ui->lbl_Image->setPixmap(QPixmap(":/Image/a.png"));
//    //利用Qlabel显示gif动态图片
//    QMovie *movie =new QMovie(":/XX.gif");
//    ui->lbl_movie->setMovie(movie);
//    movie->start();//播放
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46

内容来自:b站最新QT从入门到实战完整版|传智教育。
如有错误,欢迎指出。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/138821
推荐阅读
相关标签
  

闽ICP备14008679号