QT学习(一)基础

一、hello world和QPushbutton

1.创建一个空的QT

2.增加一个空的源文件main

3.在.pro文件中加入

QT +=widgets gui

4.在main中编写代码

/*应用程序抽象类*/
#include<QApplication>
/*窗口类*/
#include<QWidget>
//按钮
#include<QPushButton>
int main(int argc,char *argv[])
{
    QApplication app(argc,argv);
    /*构造一窗口*/
    QWidget w;
    /*设置窗口的名称*/
    w.setWindowTitle("Hello World");

    /*按钮也是一个窗口*/
    QPushButton button;
    button.setText("Button");
    /*窗口对象的父子关系影响,影响显示位置*/
    /*没有父窗口的窗口,我们称之为主窗口*/
    button.setParent(&w);

    /*QT对c++的拓展*/
    //std::bind std::function
    //信号和槽
    QObject::connect(&button,SIGNAL(clicked(bool)),&w,SLOT(close()));

    /*显示窗口*/
    w.show();
    /*在exec中有一个消息循环,保持窗口显示后补消失*/
    return app.exec();
}

二、QLineEdit

/*应用程序抽象类*/
#include<QApplication>
/*窗口类*/
#include<QWidget>
#include<QLineEdit>
#include<QCompleter>
int main(int argc,char *argv[])
{
    QApplication app(argc,argv);
    /*构造一窗口*/
    QWidget w;
    /*设置窗口的名称*/
    w.setWindowTitle("Hello World");

    QLineEdit edit;
    edit.setParent(&w);

    /*输入密码*/[]
    //edit.setEchoMode(QLineEdit::Password);
    //获取输入的内容
    edit.text();
    edit.setPlaceholderText("Please input number:");//输入提示
    QCompleter completer(QStringList()<<"aav"<<"123"<<"998");
    completer.setFilterMode(Qt::MatchContains);//设置匹配格式
    edit.setCompleter(&completer);//提示自动补全
    /*显示窗口*/
    w.show();
    /*在exec中有一个消息循环,保持窗口显示后补消失*/
    return app.exec();
}

三、坐标系统和layout

/*应用程序抽象类*/
#include<QApplication>
/*窗口类*/
#include<QWidget>
#include<QLineEdit>
#include<QCompleter>
#include<QPushButton>
#include<QVBoxLayout>
#include<QHBoxLayout>
#include<QGridLayout>
#include<QLabel>
int main(int argc,char *argv[])
{
    QApplication app(argc,argv);
    /*构造一窗口*/
    QWidget w;
    /*设置窗口的名称*/
    w.setWindowTitle("Hello World");

    QPushButton button;
    button.setText("Button");
   // button.setParent(&w);
    //button.setGeometry(30,30,100,30);//针对于父窗口坐标体系的值

    QLineEdit edit;
   // edit.setParent(&w);
#if 0
    QVBoxLayout layout;
    QHBoxLayout layout;//加入layout后,前面的设置部件的父窗口的部分就可以不要了
    layout.addStretch(1);
    layout.addWidget(&button,1);
    layout.addSpacing(50);
    layout.addWidget(&edit,1);//数字可以控制部件的比重
    layout.addStretch(1);//在后边加了一个弹簧
#endif
#if 0
    QGridLayout layout;
    layout.addWidget(&button,1,1);
    layout.addWidget(&edit,1,2);
    layout.addWidget(new QPushButton("1,0"),2,2);
    layout.addWidget(new QPushButton("1,1"),2,1);
    //格子的合并
    layout.addWidget(new QPushButton("aaa"),3,1,1,2);//从3,1的位置开始的1行2列

    layout.setColumnStretch(3,1);//列的弹簧
    layout.setRowStretch(4,1);
    layout.setColumnStretch(0,1);//列的弹簧
    layout.setRowStretch(0,1);
#endif
//layout的合并

    QGridLayout layout;
    QLineEdit *password;
    layout.setColumnStretch(3,1);//列的弹簧
    layout.setRowStretch(4,1);
    layout.setColumnStretch(0,1);//列的弹簧
    layout.setRowStretch(0,1);


    layout.addWidget(new QLabel("username:"),1,1);
    layout.addWidget(new QLineEdit(),1,2);
    layout.addWidget(new QLabel("password:"),2,1);
    layout.addWidget(password=new QLineEdit(),2,2);

    password->setEchoMode(QLineEdit::Password);

    QHBoxLayout *hBox;
    layout.addLayout(hBox=new QHBoxLayout,3,2);
    hBox->addStretch(1);
    hBox->addWidget(new QPushButton("login") );
    /*显示窗口*/
    w.setLayout(&layout);
    w.show();

    /*在exec中有一个消息循环,保持窗口显示后补消失*/
    return app.exec();
}

 

 

 

 




posted on 2017-12-28 17:13  rainbow1122  阅读(207)  评论(0编辑  收藏  举报