当前位置: 首页 > article >正文

QT笔记00 记事本项目

 

 

 

 

QT GUI编程-CSDN博客

 

00:按键,对话框,垂直布局

包含内容:

按键,对话框,垂直布局的创建

#include <QPushButton>

#include <QVBoxLayout>

 

//普通按钮

QPushButton *bt_test;

//普通按钮示例
bt_test = new QPushButton("ok");
bt_test->setMinimumSize(200, 100);      //设置最小尺寸
bt_test->setFlat(true);                 //设置无边框
bt_test->setIconSize(QSize(80, 80));    //设置按钮图标大小
bt_test->setIcon(QIcon("car.png"));     //设置按钮图标

//垂直布局
QVBoxLayout *vbox = new QVBoxLayout;
vbox->addWidget(bt_test);
setLayout(vbox);

 

02:button 文本行 文本行输入数据提取  按键语音播报 打印输出

a65dbd13a9123d16664c562e666686a8.png

02:水平布局 || 网格状布局

 

 

 

 

ui布局类

 

背景设计

左边添加widget(窗口),右键编辑样式表,修改其设定(eg。颜色,点击三角框background-color)

 

 

窗体大小改变时,内部内容比例不改变,边框会留空

95d8701ad86f43b7bc903c80f46235fb.png

注意是针对竖直和水平的layout和widget的前提下其他会报错

 

Btn按下特效,静态特效等   和导入其美化图标

鼠标到此的悬浮特效

Selectors may contain pseudo-states that denote that restrict the application of the rule based on the widget's state. Pseudo-states appear at the end of the selector, with a colon (:) in between. For example, the following rule applies when the mouse hovers over a QPushButton:

QPushButton:hover { color: white }
Pseudo-states can be negated using the exclamation operator. For example, the following rule applies when the mouse does not hover over a QRadioButton:

QRadioButton:!hover { color: red }

按下特效:右键按键,修改样式

Pseudo-states can be chained, in which case a logical AND is implied. For example, the following rule applies to when the mouse hovers over a checked QCheckBox:

QPushButton :hover:pressed{ color: white }   注意是QPushButton

Pseudo-states can be chained, in which case a logical AND is implied. For example, the following rule applies to when the mouse hovers over a checked QCheckBox:

QCheckBox:hover:pressed { color: white }


静态特效:

QPushButton { color: red; background-color: white }//

导入其美化图标

首先把要导入的图片文件放到代码文件里来里面来(pro文件,explore。。。。)

右键工程文件夹,add new,QT resource file(资源文件),选择其对应的资源目录

然后添加(加不加前缀看自己),最后要是qrc文件盒资源文件在一个文件夹里

ctrl+s保存,到此ok

在ui界面,属性里windowicon,小光标,选择文件,使其对应

按键则是右键改变样式,然后添加资源

同理能在3种状态下来对应其资源图

 

 

添加槽

方式一:ui里        信号和槽编辑器         点'+'添加

 

方式二:ui里右键对象      转到槽  选择对应型号  后会自动转到发送此时间后要执行的函数

槽与信号连接方式

主要采用方式er

其余43.信号与槽的四种代码实现方式_哔哩哔哩_bilibili(connect函数)

 

 

1.按键按下加载提前设置的对应目录文件,并输出其内容

void MainWindow::on_BtnRead_clicked()
{
    //1.打开文件
    QFile file("E:/test.txt");
    if(!file.open(QIODevice::ReadOnly | QIODevice::Text))
    {
    qDebug()<<"file open error";
    }

    //2.读文件
    char context[100]={'\0'};
    if(!file.read(context,100)==-1)
    {
        qDebug()<<"file read error";
        return;
    }// 返回-1有问题就不显示输出文件
    else
    {
    //3.显示输出文件内容
        qDebug()<<"file open success";
        qDebug() <<context;
    }
}

 

2.按下按键出现  打开文件选择框,确认后读选定文件,输出其目录和内容

void MainWindow::on_pushButton_clicked()
{
   QString fileName = QFileDialog::getOpenFileName(this,
                                                    tr("Open Image"),
                                                   "E:",                                                        //默认打开的文件夹位置
                                                   tr("Text files (*.txt)"));//打开的文件类型eg."Images (*.png *.xpm *.jpg);;Text files (*.txt);;XML files (*.xml)"
qDebug()<<fileName; //输出选择打开文件的文件名字

//1.打开文件
QFile file(fileName);//注意没有""
if(!file.open(QIODevice::ReadOnly | QIODevice::Text))
{
qDebug()<<"file open error";
}

//2.读文件
char context[100]={'\0'};//这里设置读的文本暂存大小
if(!file.read(context,100)==-1)
{
    qDebug()<<"file read error";
    return;
}// 返回-1有问题就不显示输出文件
else
{
//3.显示输出文件内容
    qDebug()<<"file read success";
    qDebug() <<context;
    file.close();//回收资源
}
}

 

3.按键按下 出现   选择框,可以多选文件

.........

 

4.//实现功能:打开选择任务栏  保存一个全新文件 并输出保存的地址到调试框

void MainWindow::on_pushButton_3_clicked()
{
    QString fileName = QFileDialog::getSaveFileName(this,  tr("Save File"),
                                                    "D:/tessst.txt",    //已开默认的保存地址
                                                    tr(" Text(*.txt *.doc )"));   //保存格式
    qDebug()<<fileName;
    QFile file;
    file.setFileName(fileName);
    if(!file.open(QIODevice::WriteOnly | QIODevice::Text))
    {
        qDebug()<<"file open error";
    }

    QTextStream out(&file);
    out.setCodec("UTF-8");
    out<<"Qdialog Write Data to the Txt File";
    file.close();
}

5.//实现功能:点击打开按键,打开txt文件,并输出到text文本框

void MainWindow::on_BtnOpean_clicked()
{
    std::cout<<"BtnOpen is chicked"<<std::endl;//输出数据

    QString fileName=QFileDialog::getOpenFileName(this,tr("Open file"),
                                                                                         "D:",
                                                                                        tr("Text(*.txt)"));//打开文件选择框

    ui->textEdit->clear();//对textEdit清屏
    QFile file;
    file.setFileName(fileName);
    if(!file.open(QIODevice::ReadOnly | QIODevice::Text)){
        qDebug()<<"file open error";
    }
    QTextStream in(&file);
    in.setCodec("UTF-8");

    while(!in.atEnd())
    {
        QString context =in.readLine();
        qDebug()<<qPrintable(context);//输出文件内容
        //ui->textEdit->setText(context);//    textEdit是文本对象名           每打开一个文件会覆盖,
        ui->textEdit->append(context);//每打开一个文件,它的内容会加在后面
    }
    file.close();
}

 

6.//实现功能:打开选择任务栏 另存为文本框内容为一个文件

void MainWindow::on_BtnSave_clicked()
{
    QString fileName=QFileDialog::getSaveFileName(this,tr("Save File"),
                                                                                        "D:new.txt",
                                                                                            tr("Text(*.txt*.doc)"));
    QFile file;
    file.setFileName(fileName);
    if(!file.open(QIODevice::WriteOnly|QIODevice::Text))
    {
        qDebug()<<"file open error";
    }

    QTextStream out(&file);
    out.setCodec("UTF-8");
    QString context=ui->textEdit->toPlainText();
    out<<context;//text内容保存到文件
    qDebug()<<context;//输出text内容
    file.close();
}

改进版看:11.

 

 

7.//实现功能:点击打开按键,打开txt文件,并输出到text文本框  加入更加下拉款选择调整打开的编码格式

1.先获取点击的 下拉框里分框的索引号和对应下拉框名字

在此处添加connect连接点击的信号和对应处理的槽函数

dfe5a8bcd5864e7a8d7edd91e2ba4558.png

声明自定义槽函数

8263bcd9c4e540f19b07f7ef0e7f0e17.png

最后定义它

void MainWindow::oncurrentIndexChanged(int index)
{
    qDebug()<<index;//输出索引号
         qDebug()<<ui->combox->currentText();//输出对应下拉框名字

}

8.在“打开”按键的槽函数里添加根据下拉框选择的编码格式来自动调整打开文件格式的  语句

 

QString str=ui->comboBox->currentText();//获取下拉框返回文字
const  char* c_str=str.toStdString().c_str();//将QString转化为char *c类型
in.setCodec(c_str);//设置文字对应的编码格式

 

整个打开按键的   槽函数:

//实现功能:点击打开按键,打开txt文件,并输出到text文本框  加入更加下拉款选择调整打开的编码格式
void MainWindow::on_BtnOpean_clicked()
{
    std::cout<<"BtnOpen is chicked"<<std::endl;//输出数据

    QString fileName=QFileDialog::getOpenFileName(this,tr("Open file"),
                                                                                         "D:",
                                                                                        tr("Text(*.txt)"));//打开文件选择框

    ui->textEdit->clear();//对textEdit清屏
    QFile file;
    file.setFileName(fileName);
    if(!file.open(QIODevice::ReadOnly | QIODevice::Text)){
        qDebug()<<"file open error";
    }
    QTextStream in(&file);
    
    QString str=ui->comboBox->currentText();//获取下拉框返回文字
    const  char* c_str=str.toStdString().c_str();//将QString转化为char *c类型
    in.setCodec(c_str);//设置文字对应的编码格式
  //  in.setCodec("UTF-8");

    while(!in.atEnd())
    {
        QString context =in.readLine();
        qDebug()<<qPrintable(context);//输出文件内容
        //ui->textEdit->setText(context);//    textEdit是文本对象名           每打开一个文件会覆盖,
        ui->textEdit->append(context);//每打开一个文件,它的内容会加在后面
    }
    file.close();
}

 

 

9.改进一点:在修改下拉框编码时,会自动重新打开文件,不需要再手动打开

定义一个全局变量存放打开文件的地址

bcb47a70164640e386baf598e55fa67c.png

在"打开"按键的槽函数里加上  保存打开文件地址到全局变量的语句

47b01779234d471eafa5995a32ac74f5.png

此槽函数原码

//实现功能:点击打开按键,打开txt文件,并输出到text文本框  加入更加下拉款选择调整打开的编码格式
void MainWindow::on_BtnOpean_clicked()
{
    std::cout<<"BtnOpen is chicked"<<std::endl;//输出数据

    QString fileName=QFileDialog::getOpenFileName(this,tr("Open file"),
                                                                                         "D:",
                                                                                        tr("Text(*.txt)"));//打开文件选择框
fileName_last=fileName;//每次打开文件都会用全局变量记录下来这个文件名

    ui->textEdit->clear();//对textEdit清屏
    QFile file;
    file.setFileName(fileName);
    if(!file.open(QIODevice::ReadOnly | QIODevice::Text)){
        qDebug()<<"file open error";
    }
    QTextStream in(&file);

    QString str=ui->comboBox->currentText();//获取下拉框返回文字
    const  char* c_str=str.toStdString().c_str();//将QString转化为char *c类型
        qDebug()<<"textshow by:"<<str;
    in.setCodec(c_str);//设置文字对应的编码格式
   //in.setCodec("UTF-8");

    //开始显示内容
    while(!in.atEnd())
    {
        QString context =in.readLine();
        qDebug()<<qPrintable(context);//输出文件内容
        //ui->textEdit->setText(context);//    textEdit是文本对象名           每打开一个文件会覆盖,
        ui->textEdit->append(context);//每打开一个文件,它的内容会加在后面
    }
    file.close();
}

 

因为是每次更改下拉框时,进行重新打开窗口显示所以核心代码要在下拉框的槽函数

 

void MainWindow::oncurrentIndexChanged(int index)
{
    qDebug()<<index;
    qDebug()<<ui->comboBox->currentText();//输出对应下拉框名字
    ui->textEdit->clear();
    QFile file;
    file.setFileName(fileName_last);//对应打开的文件地址
    if(file.open(QIODevice::ReadOnly | QIODevice::Text))
    {
        qDebug()<<fileName_last<<"is open";

        QTextStream in(&file);
        in.setCodec(ui->comboBox->currentText().toStdString().c_str()); //后面是吧currentText的toStdString部分转化为c_str格式
        qDebug()<<"textshow by:"<<ui->comboBox->currentText();
  //开始显示内容
        while(!in.atEnd())
        {
            QString context =in.readLine();
            qDebug()<<qPrintable(context);//输出文件内容
            //ui->textEdit->setText(context);//    textEdit是文本对象名           每打开一个文件会覆盖,
            ui->textEdit->append(context);//每打开一个文件,它的内容会加在后面
        }

        file.close();
        qDebug()<<fileName_last<<"is close";
    }
}

结果演示

 

 

 

 

10.窗口左上角文本设置

 

this->setWindowTitle("文本设置内容在这");

        使用场景1.在打开一个文件时,窗口实时更新其名字到窗口左上角

主要利用QString fileName来返回文件地址显示到左上角窗口标题

在读取文件后fileName有值在修改,确保无误

63fc88319ce44d5cb694222093a6aa29.png

总函数:

//实现功能:点击打开按键,打开txt文件,并输出到text文本框  加入更加下拉款选择调整打开的编码格式
//同时 实时更新左上角的标题名
void MainWindow::on_BtnOpean_clicked()
{
    std::cout<<"BtnOpen is chicked"<<std::endl;//输出数据

    QString fileName=QFileDialog::getOpenFileName(this,tr("Open file"),
                                                                                         "D:",
                                                                                        tr("Text(*.txt)"));//打开文件选择框
fileName_last=fileName;//每次打开文件都会用全局变量记录下来这个文件名

    ui->textEdit->clear();//对textEdit清屏
    QFile file;
    file.setFileName(fileName);
    if(!file.open(QIODevice::ReadOnly | QIODevice::Text)){
        qDebug()<<"file open error";
    }
    QTextStream in(&file);

    this->setWindowTitle(fileName+"记事本");//点击打开按键其读了文件时   实时修改左上窗口文字

    QString str=ui->comboBox->currentText();//获取下拉框返回文字
    const  char* c_str=str.toStdString().c_str();//将QString转化为char *c类型
        qDebug()<<"textshow by:"<<str;
    in.setCodec(c_str);//设置文字对应的编码格式
   //in.setCodec("UTF-8");

    //开始显示内容
    while(!in.atEnd())
    {
        QString context =in.readLine();
        qDebug()<<qPrintable(context);//输出文件内容
        //ui->textEdit->setText(context);//    textEdit是文本对象名           每打开一个文件会覆盖,
        ui->textEdit->append(context);//每打开一个文件,它的内容会加在后面
    }
    file.close();
}

                                结果:

423a9aae00f1408e8008a7a4b3c1159f.png

 

同理对应  关闭按键  就要恢复原样  :

        this->setWindowTitle("欢迎哥哥");//左上角文本框标题回复原样

窗口标题初始化设定在ui里面对应窗口选中的window Title

 

 

11.//实现功能:打开选择任务栏 另存为文本框内容为一个文件

且文件格式保存为目前选择的格式

由6.升级

 

主要利用

    QString str=ui->comboBox->currentText();//获取下拉框返回文字
    const  char* c_str=str.toStdString().c_str();//将QString转化为char *c类型
    out.setCodec(c_str);//设置保存格式   文字对应的下拉款选择编码格式

完成函数:

//实现功能:打开选择任务栏 另存为文本框内容为一个文件 且文件格式保存为目前选择的格式
void MainWindow::on_BtnSaveAs_clicked()
{
    QString fileName=QFileDialog::getSaveFileName(this,tr("Save File"),
                                                                                        "D:new.txt",
                                                                                            tr("Text(*.txt*.doc)"));
    QFile file;
    file.setFileName(fileName);
    if(!file.open(QIODevice::WriteOnly|QIODevice::Text))
    {
        qDebug()<<"file open error";
    }



    QTextStream out(&file);

    QString str=ui->comboBox->currentText();//获取下拉框返回文字
    const  char* c_str=str.toStdString().c_str();//将QString转化为char *c类型
    out.setCodec(c_str);//设置保存格式   文字对应的下拉款选择编码格式

    QString context=ui->textEdit->toPlainText();
    out<<context;//text内容保存到文件
    qDebug()<<context;//输出text内容
    file.close();
}

 

12.//实现功能:保存文本框内容到当前文件  且文件格式保存为目前选择的格式

利用全局变量fileName_last和

    QString str=ui->comboBox->currentText();//获取下拉框返回文字
    const  char* c_str=str.toStdString().c_str();//将QString转化为char *c类型
    out.setCodec(c_str);//设置保存格式   文字对应的下拉款选择编码格式

完成函数:

//实现功能:保存文本框内容到当前文件  且文件格式保存为目前选择的格式
void MainWindow::on_BtnSave_clicked()
{
    QFile file;
    file.setFileName(fileName_last);
    if(!file.open(QIODevice::WriteOnly|QIODevice::Text))
    {
        qDebug()<<"file open error";
    }

    QTextStream out(&file);

    QString str=ui->comboBox->currentText();//获取下拉框返回文字
    const  char* c_str=str.toStdString().c_str();//将QString转化为char *c类型
    out.setCodec(c_str);//设置保存格式   文字对应的下拉款选择编码格式

    QString context=ui->textEdit->toPlainText();
    out<<context;//text内容保存到文件
    qDebug()<<context;//输出text内容
    file.close();
}

 

函数介绍

1.cout(打印输出)

#include<iostream>    
std::cout<<"Btn is chicked"<<std::endl;

2.弹窗

#include <QMessageBox>

 

简易弹窗:

QMessageBox msgBox;

msgBox.setText("clear is chicked");//弹窗内容

msgBox.exec();


updata版本:

731e76b289d44e67afadf6c8032abc1d.png

更详细的搜索QMessageBox

 

 

3.Qtime定时器

Qt扫盲-QTimer定时器理论总结-CSDN博客

对象控件介绍:

1.text文本框

ui->textEdit->clear();//对textEdit清屏
        //ui->textEdit->setText(context);//    textEdit是文本对象名          覆盖后显示,
        ui->textEdit->append(context);//内容会加在后面

QString context=ui->textEdit->toPlainText();//读取文本框内容给QString变量 context

 

 

2.COMBO BOX 下拉框

 

槽函数介绍

void MainWindow::on_xxxxxxxx_currentIndexChanged(int index)//当前选中项发生变化进入

 

 

获取点击的 下拉框里分框的索引号和对应下拉框名字

在此处添加connect连接点击的信号和对应处理的槽函数

dfe5a8bcd5864e7a8d7edd91e2ba4558.png

声明自定义槽函数

8263bcd9c4e540f19b07f7ef0e7f0e17.png

最后定义它

void MainWindow::oncurrentIndexChanged(int index)
{
    qDebug()<<index;//输出索引号

         qDebug()<<ui->combox->currentText();//输出对应下拉框名字

}

 

 

 

3.QDoubleSpinBox

QDoubleSpinBox的使用示例-CSDN博客

4.QRadioButton

 


http://www.kler.cn/news/355785.html

相关文章:

  • 鸿蒙网络编程系列30-断点续传下载文件示例
  • Support package for Hovl Studio assets 材质转换器
  • QT:数据库,opencv
  • 创建工具类之获取SqlSession
  • Docker 用例:15 种最常见的 Docker 使用方法
  • 浅析Android中View的测量布局流程
  • 深入理解Mysql(一)
  • 云端多租户智能管理云图采用先进的虚拟化技术
  • 勤于奋身体倒下还是上来回答粉丝关于Adsense赚美金
  • React 列表 Keys
  • Hbase 几种scan方式
  • 初学C++(缺省参数、函数重载等)
  • Linux隐藏权限介绍
  • 使用Shell脚本对Java应用等服务进行启停控制(支持批量)
  • 技术总结(八)
  • STM32笔记(1)GPIO之点亮LED
  • Vue3 路由基础 01
  • “大放水救股市”会有怎样的结果?
  • .NET 6 API + Middleware + Audit rail
  • 特征工程在营销组合建模中的应用:基于因果推断的机器学习方法优化渠道效应估计