c++ qt--页面布局(第五部分)

c++ qt–页面布局(第五部分)

一.页面布局

在设计页面的左侧一栏的组件中我们可以看到进行页面布局的一些组件

c++ qt--页面布局(第五部分)_第1张图片

布局组件的使用

1.水平布局

使用:将别的组件拖到水平布局的组件中即可,可以选择是在哪个位置

c++ qt--页面布局(第五部分)_第2张图片

2.垂直布局

使用:将别的组件拖到垂直布局的组件中即可,可以选择是在哪个位置

c++ qt--页面布局(第五部分)_第3张图片

3.栅格布局

使用:将别的组件拖到栅格布局的组件中即可,可以选择是在哪个位置

c++ qt--页面布局(第五部分)_第4张图片

4.表单布局

c++ qt--页面布局(第五部分)_第5张图片

分隔组件的使用

1.水平分隔

使用:将此组件放到布局组件中即可(也可以直接将组件放到窗口中)

c++ qt--页面布局(第五部分)_第6张图片

1.垂直分隔

使用:将此组件放到布局组件中即可(也可以直接将组件放到窗口中)
c++ qt--页面布局(第五部分)_第7张图片

在设计页面的上面也有跟左侧一样的页面布局(这里使用更加方便一些)

c++ qt--页面布局(第五部分)_第8张图片

这里拿栅格布局进行使用

使用如下图

c++ qt--页面布局(第五部分)_第9张图片

变成下图的样子

c++ qt--页面布局(第五部分)_第10张图片

栅格布局具有一定的智能化,会自动帮你把要进行栅格布局的组件所占的大小和位置分配好

二.使用了页面布局的例子

实现下面窗口

c++ qt--页面布局(第五部分)_第11张图片

进行实现

1.设计中用到的组件如下

c++ qt--页面布局(第五部分)_第12张图片

这里布局用的是栅格布局

2.对用到组件重命名(实际上是指向组件的指针的名字)

c++ qt--页面布局(第五部分)_第13张图片

3.将各个组件的功能进行实现

1.设置年龄

在mianwindow.cpp的构造函数中写下面代码

ui->sB_age->setValue(1);//年龄默认设置为1岁
2.设置性别

在mianwindow.cpp的构造函数中写下面代码

 ui->cB_sex->addItem("男");//设置性别,默认显示第一个
 ui->cB_sex->addItem("女");
3.设置日期
//这里用了QDate这个类中的函数(这个函数的返回值就是setDate函数所需要的参数也就是日期)
ui->dE_birth->setDate(QDate::currentDate());//设置当天日期
4.设置邮箱
 QStringList strList{"qq.com","163.com","foxmail.com","sina.com"};//此变量中存的是字符串,之后作为addItems函数的参数
 ui->cB_emil->addItems(strList);//设置邮箱
 ui->cB_emil->setCurrentIndex(1);//设置下标为1的邮箱默认显示(这里0是"qq.com",1是"163.com",2是"foxmail.com",3是"sina.com"与QString链表存入的QString先后顺序有关)
 //ui->cB_emil->setCurrentText("163.com");//设置"163.com"邮箱默认显示
5.更新头像

将显示照片的组件大小固定,显示的图片水平,垂直居中

c++ qt--页面布局(第五部分)_第14张图片

c++ qt--页面布局(第五部分)_第15张图片

自定义一个槽函数
1.声明

在mianwindow.h的类中写下面代码

public slots:
    void slots_selete_picture();
2.定义

在mianwindow.cpp写下面代码

void MainWindow::slots_selete_picture()
{
    //更新头像
    
    //弹出弹出框,选择图片
    
    //下面函数需要用到头文件  #include
   QString str= QFileDialog::getOpenFileName(this/*父窗口*/
                                             ,"请选择一张图片"/*弹出框标题*/
                                             ,"C:\\Users\\冉喜文\\Pictures\\Screenshots"/*初始路径*/
                                             ,"Images (*.png *.bmp *.jpg)"/*过滤,能选择的图片  注意格										   式与格式之间有空格*/); //用QSting接一下返回值
    
    qDebug()<label_picture->geometry();//动态获取显示图片组件宽度、高度
        pix=pix.scaled(rect.width(),rect.height(),Qt::KeepAspectRatio);//保持宽高比,缩放到指定大小
        ui->label_picture->setPixmap(pix);
    }
}
3.进行绑定连接

在mianwindow.cpp的构造函数中写下面代码

connect(ui->pB_picture,SIGNAL(clicked()),this,SLOT(slots_selete_picture()));//将信号与槽函数进行绑定连接

当点击下面的按键时,就会触发上面的槽函数

c++ qt--页面布局(第五部分)_第16张图片

6.实现更新按键的功能(这里更新的功能是将个人信息存入到文件中)
1.创建文件名

在mianwindow.cpp中写下面代码

#define FileName "32.txt"
2.创建文件

操作文件变量不应该是局部的,所以我们在mianwindow.h的类中定义出来

public:
    QFile file;

在mianwindow.cpp的构造函数中写下面代码

QString workPath =QDir::currentPath();//获取当前的工作路径
     QDir dir(workPath);
     if(!dir.exists()){//路径不存在,则创建路径
         if(dir.mkpath(workPath)){
             QMessageBox::critical(this,"错误","创建路径失败");
 
             exit(0);//程序退出
         }
 
     }
     QString absPathFile=dir.absoluteFilePath(FileName);//当前的工作路径和文件名做拼接,返回一个新的路径
     qDebug()<<"absPathFile = "<
3.将所有信息写入文件中

自定义一个槽函数

1.声明

在mianwindow.h的类中写下面代码

public slots:
     void slots_write();

2.定义

在mianwindow.cpp写下面代码

void MainWindow::slots_write()
{
    file.resize(0);//清空文件
    
    QString userInfo="%1\n%2\n%3\n%4\n%5\n%6\n%7\n%8\n%9\n";//将所有信息存入到一个QString中,这里用了灵活格式化
    userInfo = userInfo.arg(ui->le_nick->text())//这里接一下
            .arg(ui->pTE_write->toPlainText ())
            .arg(ui->le_name->text())
            .arg(ui->cB_sex->currentText ())
            .arg(ui->sB_age->text())
            .arg(ui->dE_birth->text ())
            .arg(ui->_tel->text ())
            .arg(ui->le_mail->text()+"@"+ui->cb_suffix->currentText ())
            .arg(ui->lineEdit->text ());
    qDebug ()<<"userInfo = "<

3.进行绑定

在mianwindow.cpp的构造函数中写下面代码

connect(ui->pB_picture,SIGNAL(clicked()),this,SLOT(slots_selete_picture()));//将信号与槽函数进行绑定连接
7.实现清空按键的功能(这里清空的功能是将个人信息全部重置为初始状态)
自定义一个槽函数
1.声明

在mianwindow.h的类中写下面代码

public slots:
    void slots_selete_picture();
2.定义

在mianwindow.cpp写下面代码

void MainWindow::slots_clearform()
{

    ui->le_nick->clear();
    ui->pTE_write->clear();
    ui->le_name->setText("");
    ui->cB_sex->setCurrentIndex(0);
    ui->sB_age->setValue(1);
    ui->dE_birth->setDate(QDate::currentDate());
    ui->le_phone->clear();
    ui->le_emil->clear();
    ui->cB_emil->setCurrentIndex(1);
    ui->le_school->clear();
}
3.进行绑定连接

在mianwindow.cpp的构造函数中写下面代码

connect(ui->pB_clear,SIGNAL(clicked()),this,SLOT(slots_clearform()));//将信号与槽函数进行绑定连接

你可能感兴趣的:(c++,c++,qt)