短学期实训(1)

写在最前:一个辣鸡小白的无聊流水账自述

上午的工作

搭建VS+Qt工作环境,并且添加番茄助手。
下载了VS2017版本(基于c++),Qt5.13.0 添加了这几个插件mingw73_32,mingw73_64,msvc2017,msvc2017_64, QtWebEngine (以防之后项目会用到),番茄助手2017破解版

下午的工作

熟悉Qtcreator和VS+Qt的工作环境
在使用Qtcreator运行简单测试程序时,发现错误报错信息报错信息
可能原因:由于下载Qt时或保存项目时未按照默认路径保存,该问题与环境变量有关
此后,初步了解widget类,先在Qtcreator中写简单程序,更改窗口名称。
主函数中无需过多编写代码,主要工作代码应在构造函数中完成

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);//指针创建,内存空间还未创建 指针空间分配到堆空间
    qDebug()<<"Hello Qt!";

}
int main(int argc, char *argv[])//所有c++程序的入口
//argc是参数个数的计数值参数,*argv[]是参数列表的字符串,另一种方式是二级指针char **argv
{
    QApplication a(argc, argv);//一个qt程序,有且仅有一个应用程序类,a是调用构造函数建立的一个对象
    Widget w;//建立一个widget类的对象w
    w.show();//调用widget类的对象成员函数 show()将窗口w显示出来

    return a.exec();//返回a对象的exec方法, exec()称为事件阻塞函数(卡在这相当于system("pause"),
    //并收集鼠标的所有操作,点击、移动)
}

初步了解widget类和窗口程序之后,开始VS的学习
在使用番茄助手时一度发现有很多功能不能使用,可能是破解版本的问题吧……

还是个小白,对番茄助手的很多功能都不太熟悉,以后的学习再慢慢来吧……
main.cpp

#include "QtGuiApplication1.h"
#include <QtWidgets/QApplication>

int main(int argc, char *argv[])
{
	QApplication a(argc, argv);
	QtGuiApplication1 w;

	return a.exec();
}

QtGuiApplication1.h

#pragma once
#pragma execution_character_set("utf-8")
#include <QtWidgets/QWidget>
#include "ui_QtGuiApplication1.h"
#include<QPushButton>
#include<QLineEdit>
#include<QTextEdit>

class QtGuiApplication1 : public QWidget
{
	Q_OBJECT

public:
	QtGuiApplication1(QWidget *parent = Q_NULLPTR);

private:
	Ui::QtGuiApplication1Class ui;
	QPushButton b0;
	QPushButton b1;
	QTextEdit te;
	QLineEdit lineEdit1;
};

QtGuiApplicaiton1.cpp

#pragma execution_character_set("utf-8")
#include "QtGuiApplication1.h"
#include<QPushButton>
#include<QLineEdit>
#include<QTextEdit>


QtGuiApplication1::QtGuiApplication1(QWidget *parent)
	: QWidget(parent)
{
	ui.setupUi(this);
	this->setWindowTitle("你好QT!");
	//定义一个按钮
	QPushButton b0(this);//按钮的构造函数可以定义  &w将父函数的指针赋给它
//采用的是构造函数中填入父对象地址的方式
	b0.setText("777");
	//b0.show();

	QPushButton b1;//没有指定父对象的按钮
//采用成员函数的方式设置父对象
	b1.setParent(this);
	b1.setText("社会程序员");
	b1.move(0, 100);
	//b1.show();//由于没有指定父对象,所以按钮b1单独显示
//以上为2中方法设置对象的父对象

	QLineEdit lineEdit1(this);//行编辑器
	lineEdit1.move(100, 100);
	lineEdit1.setText("社会主义好!");

	QTextEdit te(this);
	te.setText("中国人民真争气");
	te.move(100, 200);
	this->show();
}

其实最开始老师为了我们方便理解 这段放在构造函数里的代码是放在main函数里的,放在main函数里的时候一切运行正常,结果等把这段修改到cpp里的时候就开始报错了……老师的也各种报错,但是和我的错误不一样,po一下自己的错误叭
老师说是又跟Qt的安装路径有关……(合着今天下午的错误全跟路径杠上了,可我觉得好像当时下Qt的时候是按默认路径装的啊……行吧,以后涉及到Qt全用默认路径)
后来老师的错误也一直没解决掉,于是语重心长地说,重写一遍代码比调试错误的时间还是更短的,于是又开了个项目……
QtGuiApplication.h

#pragma once
#pragma execution_character_set("utf-8")
#include <QtWidgets/QWidget>
#include "ui_QtGuiApplication1.h"
#include<QPushButton>
#include<QLineEdit>
#include<QTextEdit>

class QtGuiApplication1 : public QWidget
{
	Q_OBJECT

public:
	QtGuiApplication1(QWidget *parent = Q_NULLPTR);
	void clearte();
	void react();

private:
	Ui::QtGuiApplication1Class ui;
	QPushButton b0;
	QPushButton* b1;
	QTextEdit* te;
	QLineEdit* le;
};

QtGuiApplication.cpp

#include "QtGuiApplication1.h"

QtGuiApplication1::QtGuiApplication1(QWidget *parent)
	: QWidget(parent)
{
	ui.setupUi(this);
	b0.setParent(this);
	b0.setText("按钮一");
	b1 = new QPushButton("我是按钮2", this);
	b1->setParent(this);
	//b1->setText("按钮2");
	b1->move(0, 100);
	le = new QLineEdit(this);
	te = new QTextEdit(this);
	le->move(150, 0);
	te->move(150, 100);

	le->setText("改革春风吹满地");
	te->setText("中国人民真争气");

	//connect(信号的发出者,信号分类,信号的接收者,槽函数)
	connect(b1, &QPushButton::clicked, this, &QtGuiApplication1::close);
	connect(&b0, &QPushButton::pressed, this, &QtGuiApplication1::clearte);
	connect(&b0, &QPushButton::released, this, &QtGuiApplication1::react);
	
}

void QtGuiApplication1::clearte()
{
	le->setText("");
	te->setText("");
}
void QtGuiApplication1::react()
{
	le->setText("改革春风吹满地");
	te->setText("中国人民真争气");
}

平平淡淡的main函数……

#include "QtGuiApplication1.h"
#include <QtWidgets/QApplication>

int main(int argc, char *argv[])
{
	QApplication a(argc, argv);
	QtGuiApplication1 w;
	w.show();
	return a.exec();
}

在这里插入图片描述
其实到最后还是报错,就是上面的Qt5cored.dll和Qt5widget.dll……但是试了一堆方法最后还是改了环境变量,之后发现……
之前打开这个项目一直是打开文件夹,后来改成直接打开项目project,结果发现欸跑出来了……行吧真争气
睡了睡了,这都要第二天了
补充:今早用这种方法再次打开第三个程序,发现它也跑得起来……

发布了2 篇原创文章 · 获赞 0 · 访问量 13

猜你喜欢

转载自blog.csdn.net/weixin_43754153/article/details/99770855
今日推荐