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

简介:  1.新建一个空Qt项目 2 新建一个新的文件(右击项目à添加新文件) 3 配置pro文件属性 SOURCES += \     main.cpp QT += widgets gui 4 编写


1.新建一个空Qt项目

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

3 配置pro文件属性

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

}

运行结果:

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

}

运行结果:

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

}

运行结果:

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

}

运行结果:

 

 

 

 

 

 

 

 

 

 

 

 

目录
相关文章
|
小程序 测试技术 uml
电商小程序01需求分析
电商小程序01需求分析
关于 qml程序在目标机上开发时运行出现不断闪屏现象的 解决方法
关于 qml程序在目标机上开发时运行出现不断闪屏现象的 解决方法
关于 qml程序在目标机上开发时运行出现不断闪屏现象的 解决方法
|
安全 编译器 开发者
【Qt 学习笔记】Qt信号和槽的其他说明及Lambda表达式
【Qt 学习笔记】Qt信号和槽的其他说明及Lambda表达式
619 0
|
3月前
|
机器学习/深度学习 人工智能 测试技术
开源SOTA:阶跃发布端到端语音大模型Step-Audio 2 mini!
大家好,今天阶跃星辰正式发布最强开源端到端语音大模型 Step-Audio 2 mini,该模型在多个国际基准测试集上取得 SOTA 成绩。
599 21
|
算法 安全 测试技术
golang 栈数据结构的实现和应用
本文详细介绍了“栈”这一数据结构的特点,并用Golang实现栈。栈是一种FILO(First In Last Out,即先进后出或后进先出)的数据结构。文章展示了如何用slice和链表来实现栈,并通过golang benchmark测试了二者的性能差异。此外,还提供了几个使用栈结构解决的实际算法问题示例,如有效的括号匹配等。
269 1
golang 栈数据结构的实现和应用
|
存储 算法 关系型数据库
MySQL8 中文参考(二)(2)
MySQL8 中文参考(二)
186 0
|
前端开发 程序员 API
【Qt】控件介绍
【Qt】控件介绍
解锁Qt QListWidget的全部潜力——用最佳实践和技巧赢得用户的喜爱和赞誉!
解锁Qt QListWidget的全部潜力——用最佳实践和技巧赢得用户的喜爱和赞誉!
532 1
【Qt 学习笔记】Qt常用控件 | 布局管理器 | 表单布局Form Layout
【Qt 学习笔记】Qt常用控件 | 布局管理器 | 表单布局Form Layout
595 2
|
C++ Windows
第1个Qt项目:计算器
第1个Qt项目:计算器
273 1
第1个Qt项目:计算器