如图,ui界面设计布局问题

img


请问如图中,多个标签布局后,左下角那个总是无法对齐,应该怎么调整呢

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7653324
  • 你也可以参考下这篇文章:QT5在海思安防平台上的UI应用一些优化方法
  • 除此之外, 这篇博客: 关于ui界面的简单搭建中的 关于ui界面的简单搭建 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    1. 首先先创建新项目
      在这里插入图片描述在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      点击创建界面
      注意:项目名称不要出现中文

    2.在项目中点击界面文件
    进入ui设计
    在这里插入图片描述
    输入名称
    在这里插入图片描述
    注意:箭头指向的object action不能用中文

    在这里插入图片描述
    可以在这里进行修改文本名称(在这可以修改为中文)
    则ui界面上的文字就变为中文

    但是现在的ui界面上并不能写内容,这就要加入Text Edit,在工具栏中可以找到,添加到ui界面上
    在这里插入图片描述
    虽然添加了文本编辑,但是文本编辑的编辑范围大小并不能随着ui界面的拖拽拉长而增大。
    这时就需要点击Text Edit在ui上的界面,再点击后面的界面
    再点击上面的垂直分布就能实现,但是实现的还是存在一点间隔,为了消除间隔
    点击对象中的centralWidget
    在这里插入图片描述
    然后在下面的属性栏中找到Layout
    在这里插入图片描述

    把圈主的属性数值进行修改,就该为零,ui界面就没有边框了
    在这里插入图片描述
    可以在属性栏中的windowsTitle中为ui窗口命名

    之后我们为ui界面加入图标:
    先把下载好的图标放到程序的文件中
    再回到qt中点击左边的编辑回到程序中在(程序名).pro。程序中加入RC_ICONS =图标名称(加上后缀)
    在这里插入图片描述
    当然也有另一种方法加入图标:
    先进入ui设置界面,点击右边的mainwindow,之后在属性栏中找到windowicon后面的值,在旁边的倒三角符号中选择 选择文件,再把图标拖拽到那,就完成了

    2.为ui界面添加功能:
    点击左边的编辑进入源文件,这里的源文件有两个,一般是在mainwindow.cpp中进行编译的。
    开始为之前的项目编写功能,先进入ui设计界面,在ui界面的下方右击文本名称,再点击转到槽,选择triggered() QAction这个信号,点击ok,就可以进行编辑
    关于各个功能的程序:

    为了方便使用我们把保存文件写为一个函数
    点击头文件添加

    #include <QMainWindow>
    
    namespace Ui {
    class MainWindow;
    }
    
    class MainWindow : public QMainWindow
    {
        Q_OBJECT
    
    public:
        explicit MainWindow(QWidget *parent = 0);
        ~MainWindow();
    
    private slots:
        void on_actionDakai_triggered();
    
        void on_actionBaocun_triggered();
    
        void on_actionXinjian_triggered();
    
        void on_actionTuichu_triggered();
    
        void on_actionChexiao_triggered();
    
        void on_actionFuzhi_triggered();
    
        void on_actionZhantie_triggered();
    
        void on_actionJiantie_triggered();
    
    
        void saveFile(const char *file,const char *buf);
    
        void on_actionBianji_triggered();
    
        void on_actionLingcunwei_triggered();
    
    private:
        Ui::MainWindow *ui;//添加的语句
    };
    
    #endif // MAINWINDOW_H
    

    之后再点击mainwindow.cpp进行编写

    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    
    #include <QTextCodec>
    //转码头文件
    #include <QFileDialog>
    //打开文件对话框头文件
    #include <QString>
    #include <QDebug>
    //#include <QByteArray>//另一种转码头文件
    #include <string.h>
    #define cout qDebug()//打印log日志或断点
    
    
    QString fileName=NULL;
    
    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
    }
    
    MainWindow::~MainWindow()
    {
        delete ui;
    }
    
    //保存文件
    void MainWindow::saveFile(const char *file,const char *buf)
    {
        FILE *fp=fopen(file,"w");
        if(!fp)
            return;
    
        //读取文本信息
       // QString txt = ui->textEdit->toPlainText();
        //转成char *类型
       // const char *buf=txt.toStdString().data();
    
        //保存文件
        fputs(buf,fp);
    
        fclose(fp);
    }
    
    //打开文件
    void MainWindow::on_actionDakai_triggered()
    {
        //打开文件
        /*1.fopen(文件名,打开方式)
         * 2.判断可用性
         * 3.读取内容
         * 4.关闭
         */
        //通过对话框打开文件,获取文件路径(GBK),此时文件是QString类型
        fileName=QFileDialog::getOpenFileName();//打开文件对话框
        //cout<<"===="<<fileName<<"====";
        //printf
        QTextCodec * codec=QTextCodec::codecForName("GBK");
        //GBK,文件地址的编码格式是GBK的
    
        char *file =codec->fromUnicode(fileName).data();
        //将QString类型转化成char *类型
    
        //另一种转码方式
        //QByteArray ba=fileName.toLatin1();//将QString转换为QByteArray类型
        //char *file=ba.data();//再将QByteArray类型转化为char *类型
    
        FILE *fp=fopen(file,"r");
        if(!fp)
            return;//由于是void类型不加返回值
        cout<<"open file successfully!"<<endl;
        //endl相当于换行
        char buf[1024];
        QString txt;
        while(!feof(fp))
        {
            memset(buf,0,1024);
            fgets(buf,1024,fp);
            //cout<<buf;
            txt +=codec->toUnicode(buf);//将char *类型转化成QString类型,并加到txt中
            //为了读取中文所采取的
        }
         ui->textEdit->setText(txt);//为文本输入标签设置内容
         fclose(fp);
    
    }
    
    void MainWindow::on_actionBaocun_triggered()
    {
        if(fileName==NULL)
        //打开文件
        fileName=QFileDialog::getSaveFileName();
    
        //转码
        QTextCodec *codec=QTextCodec::codecForName("GBK");//utf-8 GBK GB2312支持中文
        char *file=codec->fromUnicode(fileName).data();
    
        //读取文本信息
        QString txt = ui->textEdit->toPlainText();
        //转成char *类型
        const char *buf=txt.toStdString().data();
    
        saveFile(file,buf);
    }
    
    //新建文件
    void MainWindow::on_actionXinjian_triggered()
    {
        //ui->textEdit->setText("");
    
        //提示用户保存
    
        ui->textEdit->clear();
        fileName.clear();//重置为空
    }
    
    //退出
    void MainWindow::on_actionTuichu_triggered()
    {
        //提示用户保存
    
        exit(0);
    }
    
    //撤销
    void MainWindow::on_actionChexiao_triggered()
    {
        //撤销
        ui->textEdit->undo();
    }
    
    //拷贝
    void MainWindow::on_actionFuzhi_triggered()
    {
        //拷贝
        ui->textEdit->copy();
    }
    
    //粘贴
    void MainWindow::on_actionZhantie_triggered()
    {
        //粘贴
        ui->textEdit->paste();
    }
    
    剪贴
    void MainWindow::on_actionJiantie_triggered()
    {
        //剪切
        ui->textEdit->cut();
    }
    
    //编译
    void MainWindow::on_actionBianji_triggered()
    {
        /*1.保存文件(如果文件保存)
         * 2.组装gcc格式
         * 3.编译(如果出错提示错误信息)      运行程序
         */
        if(fileName==NULL)
        {
            fileName=QFileDialog::getSaveFileName();
            QTextCodec *codec=QTextCodec::codecForName("GBK");
            const char *file=codec->fromUnicode(fileName).data();
    
            QString txt=ui->textEdit->toPlainText();
            const char *buf=txt.toStdString().data();
            saveFile(file,buf);
        }
        else
        {
            QString des=fileName;
            des.replace(".c",".exe");//用.exe替换.c
            char comm[1024]="gcc -o";
            strcat(comm,des.toStdString().data());//在comm后追加.exe文件
            strcat(comm," ");
            strcat(comm,fileName.toStdString().data());//在之后的comm中追加fileName文件,注意后缀
            if(!system(comm))
            {
                char cmd[256]="cmd ";
                strcat(cmd,des.toStdString().data());
            }
            cout<<"compile successfully!";
        }
    }
    
    //另存为
    void MainWindow::on_actionLingcunwei_triggered()
    {
        //打开文件
        fileName=QFileDialog::getSaveFileName();
    
        //转码
        QTextCodec *codec=QTextCodec::codecForName("GBK");//utf-8 GBK GB2312支持中文
        char *file=codec->fromUnicode(fileName).data();
    
        //读取文本信息
        QString txt = ui->textEdit->toPlainText();
        //转成char *类型
        const char *buf=txt.toStdString().data();
    
        saveFile(file,buf);
    }
    

    这就完成了几个简单的功能

  • 您还可以看一下 刘国柱老师的游戏UI界面框架设计系列视频课程课程中的 配置管理_框架中常量部分统一定义小节, 巩固相关知识点