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

}

运行结果:

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

  1. 【Flutter】Flutter 布局组件 ( FractionallySizedBox 组件 | Stack 布局组件 | Positioned 组件 )

    文章目录 一.FractionallySizedBox 组件 二.Stack 布局组件 三.Positioned 组件 四. 完整代码示例 五. 相关资源 一.FractionallySizedBox ...

  2. java容器内setBounds()确定组件位置

    setBounds(int x,int y,int width,int height)可以设置组件位置,但是要注意把容器的布局管理设置为null 即 容器对象.setLayout(null); 否则容 ...

  3. 如何在 CSS 中设置组件在浏览器屏幕水平垂直居中

    如何在 CSS 中设置组件在浏览器屏幕水平垂直居中   在 CSS 中设置组件在浏览器屏幕水平垂直居中可分解为两个问题,一是设置组件在其父组件的水平垂直居中,二是让其父组件铺满整个屏幕.   对于让最 ...

  4. java实用教程——组件及事件处理——设置组件的位置(相对于窗口具体位置和布局)

    1: 相对于窗口的具体位置 关键点: JButton组件添加到JPanel时,如果想自己位置,需要对JPanel进行如下设置,才能自定义按钮位置 需要将组件添加到画板上去,才可以设置组件的相对具体位置 ...

  5. 033-使用UIManager设置组件外观界面,适应不同操作系统

    上一讲:032-JAVA窗体图形图像处理(Graphics绘图,五子棋游戏实战)_CSDN专家-赖老师(软件之家)的博客-CSDN博客 下一讲:034-用Swing组件综合应用(实现QQ登录与注册界面 ...

  6. vue 动态设置组件高度_高度动态的Vue明星评分组件

    vue 动态设置组件高度 虚拟动态星级 (vue-dynamic-star-rating) A Highly Customizable, easy-to-use elegant stars ratin ...

  7. SketchUp教程:如何正确设置组件对象坐标轴

    作者:TutorialsUp 今天为大家带来的是 SketchUp如何正确设置组件对象坐标轴 我们经常会忽略对象坐标轴的含义 特别是在放样过程中, 导致无法将其放置在正确的位置 作者将通过简短的5分钟 ...

  8. 【Spring注解驱动开发】使用@Scope注解设置组件的作用域

    写在前面 Spring容器中的组件默认是单例的,在Spring启动时就会实例化并初始化这些对象,将其放到Spring容器中,之后,每次获取对象时,直接从Spring容器中获取,而不再创建对象.如果每次 ...

  9. 【Flutter】Animation 动画 ( Flutter 动画基本流程 | 创建动画控制器 | 创建动画 | 设置值监听器 | 设置状态监听器 | 布局中使用动画值 | 动画运行 )

    文章目录 一.创建动画控制器 二.创建动画 三.设置值监听器 四.设置状态监听器 五.布局中使用动画值 六.动画运行 七.完整代码示例 八.相关资源 Flutter 动画基本流程 : ① 创建动画控制 ...

最新文章

  1. Centos7 Docker Compose部署mysql5.7
  2. 消费机器人今年爆发!四大品类瓜分百亿蛋糕
  3. 舵机弹跳机器人_这个小小的机器人外形呆萌 弹跳能力绝对比你好
  4. python的set结构
  5. 浙江省职业技能考试大纲计算机,浙江省高校计算机等级考试大纲
  6. Android ContentProvider支持跨进程数据共享与互斥、同步 杂谈
  7. day8 Java学习(面向对象.多态接口)
  8. 水经注叠加cad_如何下载等高线并在CAD中与卫星影像叠加
  9. UNIX 环境高级编程(八)—— fork 函数
  10. MySQL------存储过程的使用
  11. Mybatis if标签
  12. JAVA学生宿舍管理系统
  13. 信息系统项目管理师---第八章 项目质量管理
  14. java 读音_java怎么读?
  15. 如何写工作说明书(sow)
  16. java2048移动算法_2048游戏通关算法
  17. uniapp 图片上传
  18. 阿里天池大数据竞赛——口碑商家客流量预测 A2
  19. PwC普华永道——招聘
  20. 关于互联网用户的隐私保护

热门文章

  1. 2.Python算法之分治算法思想
  2. 机器学习(3.文本数据的特征抽取(第一种))
  3. Python可视化中Matplotlib绘图(2.设置范围、标签、标题、图例(详细参数))
  4. Java8 Lambda 表达式
  5. boost::statechart模块实现终止测试
  6. boost::safe_numerics模块实现混合类型产生令人惊讶的结果的测试程序
  7. boost::mp11::tuple_for_each相关用法的测试程序
  8. boost::geometry::dsv用法的测试程序
  9. boost::geometry::partition用法的测试程序
  10. boost::format模块异常处理的测试程序