C++ Qt第一个简单应用
Posted sea的博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ Qt第一个简单应用相关的知识,希望对你有一定的参考价值。
安装Qt方法
安装准备:1. qt-win-opensource-4.8.4-mingw.exe
2. qt-creator-win-opensource-2.5.0.exe
3. MinGW-gcc440_1(非常重要,安装成功与否靠它了)
注意:这个Qt在XP和win7均能正常使用的!
开始安装
步骤一:
先把所有的压缩包解压出来,然后把MinGW-gcc440_1.zip解压出来的mingw文件包剪切到C盘根目录中(当然你解压的时候可以直接选择解压到C盘)。注意:一定要把它放在C盘根目录中,否则你是百分之一万是安装不成功的!
步骤二:
(1)点击qt-win-opensource-4.8.4-mingw.exe 进行安装,这是一个类库来的,下面就等一下吧!
(2)load完之后一直按next就行了。最后来到某个界面,你直接按install就行了,接着就是漫长的等待。注意:这个Qt所有的东西都要安装在C盘,不要随意更改路径,占你2G而已,否则的话可能安装不成功的,本人没有实验过,如果你有兴趣可以试一下。
步骤二:
(1)点击qt-creator-win-opensource-2.5.0.exe把creator安装了,其实这只是一个开发环境而已,简单来说就是一个编写代码的地方,就像visual C++ 6.0一样。其实不用这个环境,用VC2008也可以的,大家有兴趣可以尝试一下。
(2)还是那句话,直接按next,不要该路径,在最后的界面,不要把勾去掉,按finish,然后creator就启动了。
现在还不能用的,要设置一下环境变量。自己百度一下吧。
======================================================================================================================
main.cpp
======================================================================================================================
#include <QApplication>
#include "widget.h"
#include <QTextCodec>
/*void MyApplication::showMinimizedClick()
{
this->showMinimized();
}*/
int main(int argc, char *argv[])
{
QTextCodec *codec = QTextCodec::codecForName("GBK");//??¿?2
QTextCodec::setCodecForTr(codec);
QTextCodec::setCodecForLocale(codec);
QTextCodec::setCodecForCStrings(codec);
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}
======================================================================================================================
widget.cpp
======================================================================================================================
#include "widget.h"
#include <QtGui>
#include <QObject>
#include <QTextCodec>
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
edit1 = new QLineEdit;
edit2 = new QLineEdit;
label1 = new QLabel;
label2 = new QLabel;
btn1 = new QPushButton;
btn2 = new QPushButton;
label1->setText(tr("姓名"));
label2->setText(tr("年龄"));
btn1->setText(tr("确定"));
btn2->setText(tr("取消"));
QVBoxLayout *layout_main = new QVBoxLayout(this);
QHBoxLayout *layout1 = new QHBoxLayout();
QHBoxLayout *layout2 = new QHBoxLayout();
QHBoxLayout *layout3 = new QHBoxLayout();
layout1->addWidget(label1);
layout1->addWidget(edit1);
layout2->addWidget(label2);
layout2->addWidget(edit2);
layout3->addWidget(btn1);
layout3->addWidget(btn2);
layout_main->addLayout(layout1);
layout_main->addLayout(layout2);
layout_main->addLayout(layout3);
//connect(btn1, &QPushButton::clicked, this, &Widget::showFileDialog);
connect(btn1, SIGNAL(clicked()), this, SLOT(showFileDialog()));
//QObject::connect(btn1,&QPushButton::clicked,this,&Widget::showFileDialog);
}
void Widget::showFileDialog()
{
// 获取打开的文件对话框中选中的文件的名称,getOpenFileName()函数
QString s = QFileDialog::getOpenFileName(this, "open file dialog", "/");
// 将获取到的名称添加到编辑框中
edit1->setText(s);
}
void Widget::clickedSlots2()
{
edit2->setText("333333333333");
}
Widget::~Widget()
{
}
======================================================================================================================
widget.h
======================================================================================================================
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QDialog>
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = 0);
~Widget();
private:
QLineEdit *edit1, *edit2;
QLabel *label1, *label2;
QPushButton *btn1, *btn2;
private slots:
void showFileDialog();
void clickedSlots2();
};
#endif // WIDGET_H
=====================================================================================================
虽然用python写了很多的界面,但是用c++写还是遇到了不少的问题,信号连接找了好多方法尝试才成功,还有中文编码的问题等等。
===============================================================================================================
Qt是一个功能非常完善的c++跨平台图形库,其实与其说图形库倒不如说它是一个与MFC类似的应用框架。Qt本身就是使用c++语言实现。
QT理论上是跨平台的,MFC只是windows下的架构。
QT是一个完全的C++程序开发框架,包含类库和跨平台国际化开发工具。QT API和开发工具对所有支持平台都是一致的,从而可以进行独立于平台的程序开发和配置。使得跨平台软件编程直观、简易和方便。
QT是一种c++语言的方言。
因为它要使用自己的预处理器处理代码后,才能用C++编译器编译代码。
qt基于c++语言实现,c++本身只是为开发人员提供了一种编程手段,而Qt正是利用了它实现了一个半成品的应用框架。c++语言自身实现非常复杂,比如多态、继承、虚函数等语言特性的实现就较为底层,只能由天才级的it人士完成。而Qt相对c++而言属于高层次的应用,普通的Qt开发人员做的应用程序相对Qt而言又高了一个层此。
qt里的类都是由c++写的,你用qt编程的时候和c++不同点在于:很大一部分和信号与槽有关的c++代码不用你自己来写,是由qt sdk提供的一个程序自动生成的。
总之无论qt自动生成的代码还是你写的调用qt的代码或者qt类库底层的代码都是c++。qt开源。
QT是一个高层的类库,OpenGL是底层的库。
如果相互调用的话,是QT调用OpenGL。
OpenGL只是负责画出来一个图像,可能会细节到设计出来具体哪一个像素怎么画出来的,至于其他的事情完全不管。
QT则会做更多的事情,比如画出一个完整的对话框,并且替你把对话框的一些点击事件、关闭事件处理一下。而且QT画东西的时候,它并不一定是自己直接画,多半会通过调用OpenGL等库来画出来。
用木头盖房子来打比方的话,OpenGL负责帮你把树种出来,保证木材是结实耐用的。而QT帮你把木材加工好,做成一个木门,保证木门能够正确地安装和使用。
你需要的就是把这个做好的木门安装到你的房子上。
C++中的类,接口在QT中是可以使用的,和在C++中一样
C++是一个语言,而Qt是一个图形界面库(GUI)
除去界面相关操作,实际的编程回归c++中来。
以上是关于C++ Qt第一个简单应用的主要内容,如果未能解决你的问题,请参考以下文章
在 Qt C++ 应用程序中创建 python 解释器小部件的简单方法?