更新时间:2022-04-05 22:25:48
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();
/*QT对C++的拓展*/
//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();
/*QT对C++的拓展
QT对C++的拓展
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);
/* QT对C++的拓展 */
//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();
}
运行结果: