QT编写一个简单的包含输入输出的C++界面程序
QT官网下载文章目录一、介绍1、创建项目2、.ui具体内容二、设计一、介绍1、创建项目右击“文件”,选择“新建文件或项目”选择Application中的Qt Widgets Application输入名称,选择位置,一直下一步即可这就是创建的内容2、.ui具体内容双击.ui文件进入设计界面,点击编辑即回到代码界面,电脑图标可以选择debug版本也可以选择Profile、Release版本;三角形是
一、介绍
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选择它的位置和大小,设置内容等
二、设计
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来进行提示,在程序运行时创建对话框来输入值。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)