zoukankan      html  css  js  c++  java
  • 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++中来。

  • 相关阅读:
    python class属性
    获取安卓系统日志输出
    深入理解C#中的IDisposable接口(转)
    Mac开启自带的Apache服务器
    【转】《Unity Shader入门精要》冯乐乐著 书中彩图
    AssetDatabase的方法总结
    C# 读写XML文件的方法
    tkinter模块常用参数(python3)
    Unity在Project视图里面显示文件的拓展名
    Git忽略提交规则
  • 原文地址:https://www.cnblogs.com/sea520/p/12712711.html
Copyright © 2011-2022 走看看