QT官网下载

一、介绍

1、创建项目

右击“文件”,选择“新建文件或项目”
在这里插入图片描述
选择Application中的Qt Widgets Application
在这里插入图片描述
输入名称,选择位置,一直下一步即可

这就是创建的内容
在这里插入图片描述

2、.ui具体内容

左:

双击.ui文件进入设计界面,点击编辑即回到代码界面;
上面区域是可以选择需要的东西,如布局(Layouts)、按钮(Buttons)、弹簧(spacer)、Input Widgets(输入)、Out Widgets(输出)等(我也只用过这几个)
下面区域的电脑图标可以选择debug版本也可以选择Profile、Release版本;三角形是运行,带个虫是调试,锤子是构建;
在这里插入图片描述

中:

中间是设计区域,初始包含主窗口(MainWindow)、菜单栏(menuBar)、工具栏(mainToolBar)、状态栏(statusBar);
下面的框框与connect函数一样,需要手动添加四个值
connect函数的格式:connect(发送者,信号,接受者,槽函数)
connect函数的写法
在这里插入图片描述

右:

上面部分显示的是设计区域的内容
下面可以设置对应的属性,geometry选择它的位置和大小,设置内容等
在这里插入图片描述

二、设计

connect函数的几种写法

1、手动添加界面,代码实现连接

(1)ui部分

将一个Input Widgets中的Text Edit,一个Display Widgets中的Text Browser,还有一个Button中的Push Button拖至设计区域
在这里插入图片描述

(2)代码部分
  • mainwindow.h文件
#ifndef MAINWINDOW_H
#define MAINWINDOW_H


#include <QMainWindow>


namespace Ui {
  class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT
    
public:
    explicit MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
    
signals:	    // 自定义信号,只定义即可

public slots:
    void start();   // 自定义槽函数,在.cpp中实现,既需定义也需实现
    
private:
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
  • mainwindow.cpp文件
#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    
    // connect函数
    connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(start()));
}

void MainWindow::start()
{
    // 清除结果区域前面缓存的结果
    ui->textBrowser->clear();

    //  获取输入框的内容
    QString content = ui->textEdit->toPlainText();
    char *content_char = content.toLatin1().data(); // 将QString转化为char字符数组

   //中间处理过程
    QString result;
    for(int i = 0;'\0' != content_char[i];i++)
        result += content_char[i];

   //  将获取的内容用append输出到TextBrowser
   ui->textBrowser->append(result);    // 将结果输出到结果区域
}

MainWindow::~MainWindow()
{
    delete ui;
}
(3)效果

在这里插入图片描述

2、代码添加界面

(1)代码文件
  • mainwindow.h文件

将上面手动添加界面的头文件中的槽函数start()删除

  • 信号定义不实现
  • 槽函数既需定义也需实现
  • mainwindow.cpp文件
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QTextEdit>
#include <QTextBrowser>
#include <QPushButton>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    
     // 添加TextEdit
    QTextEdit * edit = new QTextEdit;
    edit->setParent(this);		// 设置父亲为this,即这个窗口,让它显示主窗口中
    edit->setGeometry(0,10,131,191);	// 设置位置和大小

     // 添加TextBrowser 
    QTextBrowser * browser = new QTextBrowser;
    browser->setParent(this);
    browser->setGeometry(140,10,256,192);

    // 添加按钮
    QPushButton * button = new QPushButton("开始",this);
    button->setGeometry(310,210,75,23);
    
   // connect函数,与上面区分,用另外一种形式,也可改写为槽函数的形式
    connect(button,&QPushButton::clicked,[=](){
        QString content = edit->toPlainText();
        browser->append(content);
    });
}

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

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

三、源文件

在之前得基础上将按钮放在工具栏上,删除了状态栏,调整了位置大小
源文件

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

四、问题

这种直杠杠的输入只能解决那种输入了就直接处理完输出的,在中间没有停顿,遇到需要在程序运行时输入值得,就需要在中间添加其他内容
如可以用QMessageBox来进行提示,在程序运行时创建对话框来输入值。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐