且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

1QPushButton的使用,QLineEdit的使用,设置组件位置,布局(QHBoxLayout,QGridLayout)

更新时间:2022-04-05 22:25:48



1.新建一个空Qt项目

1QPushButton的使用,QLineEdit的使用,设置组件位置,布局(QHBoxLayout,QGridLayout)

1QPushButton的使用,QLineEdit的使用,设置组件位置,布局(QHBoxLayout,QGridLayout)

1QPushButton的使用,QLineEdit的使用,设置组件位置,布局(QHBoxLayout,QGridLayout)

1QPushButton的使用,QLineEdit的使用,设置组件位置,布局(QHBoxLayout,QGridLayout)

2 新建一个新的文件(右击项目à添加新文件)

1QPushButton的使用,QLineEdit的使用,设置组件位置,布局(QHBoxLayout,QGridLayout)

1QPushButton的使用,QLineEdit的使用,设置组件位置,布局(QHBoxLayout,QGridLayout)

1QPushButton的使用,QLineEdit的使用,设置组件位置,布局(QHBoxLayout,QGridLayout)

3 配置pro文件属性

1QPushButton的使用,QLineEdit的使用,设置组件位置,布局(QHBoxLayout,QGridLayout)

SOURCES += \

    main.cpp

QT += widgets gui

4 编写main.cpp

/*应用程序抽象类*/
#include <QApplication>
/*窗口类*/
#include <QWidget>
/*按钮*/
#include <QPushButton>
 
int main(int argc,char *argv[])
{
    QApplication app(argc,argv);
 
    /*构造一个窗口*/
    QWidget w;
    /*显示窗口*/
    w.show();
 
    /*按钮也是一个窗口*/
    QPushButton button;
    button.setText("Button");
    /*窗口对象的父子关系,影响显示位置*/
    /*没有父窗口的窗口,我们称之为主窗口*/
    button.setParent(&w);
    button.show();
 
    /*QTC++的拓展*/
    //std::bind std::function
    QObject::connect(&button, SIGNAL(clicked()), &w, SLOT(close()));
 
    w.setWindowTitle("Hello World");
 
    /*exec中有一个消息循环*/
    return app.exec();
}
运行结果:

5  新建一个空的QT项目:02LineEdit项目

如上,修改.pro文件

/*应用程序抽象类*/

#include <QApplication>

 

/*窗口类*/

#include <QWidget>

#include <QCompleter>

#include <QLineEdit>

 

int main(int argc,char *argv[])

{

    QApplication app(argc,argv);

 

    /*构造一个窗口*/

    QWidget w;

 

    QLineEdit edit;

    edit.show();

    edit.setParent(&w);

 

    /*输入密码*/

    /*

    edit.setEchoMode(QLineEdit::PasswordEchoOnEdit);

    edit.text();

    edit.setPlaceholderText("Please input text:");

    */

 

    QCompleter completer(QStringList() << "aab" << "123" << "998");

    completer.setFilterMode(Qt::MatchContains);

    edit.setCompleter(&completer);

 

    //显示窗口

    w.show();

 

    /*QTC++的拓展

    QTC++的拓展

    std::bind std::function

    QObject::connect(&button, SIGNAL(clicked()), &w, SLOT(close()));

    */

 

    w.setWindowTitle("Hello World");

 

    /*exec中有一个消息循环*/

    return app.exec();

}

运行结果:

1QPushButton的使用,QLineEdit的使用,设置组件位置,布局(QHBoxLayout,QGridLayout)

6 设置组件的位置:

/*应用程序抽象类*/
#include <QApplication>
 
/*窗口类*/
#include <QWidget>
 
/*按钮*/
#include <QPushButton>
 
int main(int argc,char *argv[])
{
    QApplication app(argc,argv);
 
    /*构造一个窗口*/
    QWidget w;
 
    /*显示窗口*/
    w.show();
 
    /*按钮也是个窗口*/
    QPushButton button;
    button.setText("Button");
    /*窗口对象的父子关系,影响显示位置*/
    /*没有父窗口的窗口,我们称之为主窗口*/
    button.setParent(&w);
    button.show();
 
    button.setGeometry(30,30,100,30);
 
    /* QTC++的拓展 */
    //std::bind std::function
    QObject::connect(&button,SIGNAL(clicked()),&w,SLOT(close()));
 
    w.setWindowTitle("Hello World");
 
    /*exec中有一个消息循环*/
    return app.exec();
}
运行结果:

7 关于QT的布局

/*应用程序抽象类*/

#include <QApplication>

 

/*窗口类*/

#include <QWidget>

 

/*按钮*/

#include <QPushButton>

#include <QHBoxLayout>

 

int main(int argc,char *argv[])

{

    QApplication app(argc,argv);

 

    /*构造一个窗口*/

    QWidget *window = new QWidget;

 

    /* 按钮也是个窗口 */

    //QPushButton button;

    //button.setText("Button");

    /* 窗口对象的父子关系,影响显示位置 */

    /* 没有父窗口的窗口,我们称之为主窗口 */

    QHBoxLayout *layout = new QHBoxLayout;

 

    QPushButton *button1 = new QPushButton("One");

    QPushButton *button2 = new QPushButton("Two");

    QPushButton *button3 = new QPushButton("Three");

    QPushButton *button4 = new QPushButton("Four");

    QPushButton *button5 = new QPushButton("Five");

 

    //弹簧,可以控制组件的显示位置

    layout->addStretch(1);

    layout->addWidget(button1,1);

    layout->addWidget(button2,1);

    layout->addWidget(button3,1);

    layout->addWidget(button4,1);

    layout->addWidget(button5,1);

    layout->addStretch(1);

 

    //通过下面的方法可以设置每个button的间隔距离

    layout->setSpacing(50);

 

    window->setLayout(layout);

    window->show();

 

    return app.exec();

}

运行结果:

1QPushButton的使用,QLineEdit的使用,设置组件位置,布局(QHBoxLayout,QGridLayout)

8 QGridLayout 表格布局

/*应用程序抽象类*/

#include <QApplication>

 

/*窗口类*/

#include <QWidget>

 

/*按钮*/

#include <QPushButton>

#include <QLineEdit>

#include <QGridLayout>

 

int main(int argc,char *argv[])

{

    QApplication app(argc,argv);

 

    /*构造一个窗口*/

    QWidget *window = new QWidget;

    /*按钮也是一个窗口*/

    QPushButton button;

    button.setText("Button");

    button.show();

 

    QLineEdit edit;

    edit.setParent(window);

 

    //表格布局

    QGridLayout *layout = new QGridLayout;

    layout->setColumnStretch(3,1);

    layout->setRowStretch(4,1);

    layout->setColumnStretch(0,1);

    layout->setRowStretch(0,1);

 

    layout->addWidget(&button,1,1);

    layout->addWidget(&edit,1,2);

    layout->addWidget(new QPushButton("1,0"),2,1);

    layout->addWidget(new QPushButton("1,1"),2,2);

 

    //void addWidget(QWidget *, int row, int column,

    //               int rowSpan, int columnSpan, Qt::Alignment = 0);

    //下面的参数表示第3行,第2列,占1行,合并2

    layout->addWidget(new QPushButton("aaa"),3,1,1,2);

 

    window->setLayout(layout);

    window->show();

 

    return app.exec();

}

运行结果:

1QPushButton的使用,QLineEdit的使用,设置组件位置,布局(QHBoxLayout,QGridLayout)

9 模拟并编写一个登录窗口

/*应用程序抽象类*/

#include <QApplication>

 

/*窗口类*/

#include <QWidget>

 

/*按钮*/

#include <QPushButton>

#include <QLineEdit>

#include <QLabel>

#include <QGridLayout>

 

int main(int argc,char *argv[])

{

    QApplication app(argc,argv);

 

    /*构造一个窗口*/

    QWidget *window = new QWidget;

 

    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);

 

    QHBoxLayout* hBox;

    //表示在第三行,占用2

    layout.addLayout(hBox = new QHBoxLayout, 3, 2);

    //加一个弹簧,让它向右偏移

    hBox->addStretch(1);

    hBox->addWidget(new QPushButton("Login"));

 

    window->setLayout(&layout);

    window->show();

 

    return app.exec();

}

运行结果:

1QPushButton的使用,QLineEdit的使用,设置组件位置,布局(QHBoxLayout,QGridLayout)