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



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();
 
    /*QT对C++的拓展*/
    //std::bind std::function
    QObject::connect(&button, SIGNAL(clicked()), &w, SLOT(close()));
 
    w.setWindowTitle("Hello World");
 
    /*在exec中有一个消息循环*/
    return app.exec();
}
运行结果:
1QPushButton的使用,QLineEdit的使用,设置组件位置,布局(QHBoxLayout,QGridLayout)


新建一个空的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();

/*QT对C++的拓展

QT对C++的拓展

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);
 
    /* QT对C++的拓展 */
    //std::bind std::function
    QObject::connect(&button,SIGNAL(clicked()),&w,SLOT(close()));
 
    w.setWindowTitle("Hello World");
 
    /*在exec中有一个消息循环*/
    return app.exec();
}
运行结果:
1QPushButton的使用,QLineEdit的使用,设置组件位置,布局(QHBoxLayout,QGridLayout)

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

//行,第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;

//列

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)

上一篇:解析大型.NET ERP系统 窗体、查询、报表二次开发


下一篇:详解C#泛型(二) 获取C#中方法的执行时间及其代码注入 详解C#泛型(一) 详解C#委托和事件(二) 详解C#特性和反射(四) 记一次.net core调用SOAP接口遇到的问题 C# WebRequest.Create 锚点“#”字符问题 根据内容来产生一个二维码