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();
}
运行结果:


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

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

//列

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. android动态设置组件LayoutParams

    开发中经常用到动态设置组件的LayoutParams,之前开发遇到的问题如下: LinearLayout.LayoutParams params = new LinearLayout.LayoutPa ...

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

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

  3. 第1组UI组件:布局管理器

    1 布局管理的来源 为了让UI在不同的手机屏幕上都能运行良好----不同手机屏幕的分辨率/尺寸并不完全相同,如果让程序手动控制每个组件的大小.位置,会给编程带来巨大的麻烦.为了解决这个问题.andro ...

  4. 第13章 Swing程序组件----常用布局管理器

    在Swing中,每个组件在容器中都有一个具体的位置和大小,而在容器中摆放各种组件时很难判断其具体位置和大小.布局管理器提供了Swing组件安排.展示在容器中的方法及基本的布局功能. Swing提供的常 ...

  5. Swing编程中为什么对Panel设置了位置后,它的lable位置也跟这变了呢?

    总结: package com.da; //这里我不明白,我对每一个Panle里的按钮设置了位置BorderLayout.SOUTH.可是为什么Lable的位置和它一样同步设置了呢? //做一个界面 ...

  6. Android UI组件:布局管理器

    为了更好的管理Android应用的用户界面中的组件,Android提供了布局管理器.通过使用布局管理器,Android应用的图形用户界面具有良好的平台无关性.通常,推荐使用布局管理器来管理组件的分布. ...

  7. Day12-微信小程序实战-交友小程序-优化“附近的人”页面与serach组件的布局和样式以及搜索历史记录和本地缓存*内附代码)

    回顾/:我们已经实现了显示附近的人的功能了,可以多个人看到附近的人页面了 但是还是要进行优化有几个问题:1.我们用户选择了其他的自定义头像之后,在首页可以看到头像的变化,但是在附近的人中头像会变成报错 ...

  8. 使用C#模拟键盘输入、鼠标移动和点击、设置光标位置及控制应用程序的显示

    1.模拟键盘输入(SendKeys) 功能:将一个或多个按键消息发送到活动窗口,就如同在键盘上进行输入一样. 语法:SendKeys.Send(string keys);SendKeys.SendWa ...

  9. java io流 创建文件、写入数据、设置输出位置

    java io流 创建文件 写入数据 改变system.out.print的输出位置 //创建文件 //写入数据 //改变system.out.print的输出位置 import java.io.*; ...

随机推荐

  1. codefroces 946F Fibonacci String Subsequences

    Description定义$F(x)$为$F(x−1)$与$F(x−2)$的连接(其中$F(0)="0"$,$F(1)="1"$)给出一个长度为$n$的$01$ ...

  2. [SDOI2005]反素数

    题目描述 对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4. 如果某个正整数x满足:g(x)>g(i) 0<i<x,则称x为反质数.例如,整数1,2,4,6 ...

  3. ●UVA 1608 Non-boring sequences

    题链: https://vjudge.net/problem/UVA-1608#author=chenchonghan题解: 分治 如果一个区间[l,r]里面在p位置出现了一个只出现一次的元素,(如果 ...

  4. Amazon新一代云端关系数据库Aurora(上)

    本文由  网易云发布. 在2017年5月芝加哥举办的世界顶级数据库会议SIGMOD/PODS上,作为全球最大的公有云服务提供商,Amazon首次系统的总结 了新一代云端关系数据库Aurora的设计实现 ...

  5. IE6浏览器有哪些常见的bug,缺陷或者与标准不一致的地方,如何解决

    IE6不支持min-height,解决办法使用css hack: .target { min-height: 100px; height: auto !important; height: 100px ...

  6. SQl语句中使用占位符的优点

    1.增加SQL代码可读性2.占位符可以预先编译,提高执行效率3.防止SQL注入4用占位符的目的是绑定变量,这样可以减少数据SQL的硬解析,所以执行效率会提高不少 绑定变量是Oracle解决硬解析的首要 ...

  7. javascript引擎任务运行顺序

  8. 零开始:NetCore项目权限管理系统:定义基本接口和实现

    上一篇讲了基础的框架搭建    地址:http://www.cnblogs.com/fuyu-blog/p/8909779.html 这篇主要讲解SqlSugar   ORM的数据库连接以及建表和接口 ...

  9. 一个页面从输入url到页面加载显示完成,中间都经历了什么

    第一种解释: 一般会经历以下几个过程: 1.首先,在浏览器地址栏中输入url 2.浏览器先查看浏览器缓存-系统缓存-路由器缓存,如果缓存中有,会直接在屏幕中显示页面内容.若没有,则跳到第三步操作. 3 ...

  10. Day 1 Python简单程序

    一.高级语言和低级语言   最初的计算机程序都是用0和1的序列表示的,程序员直接使用的是机器指令,无需翻译,从纸带打孔输入即可执行得到结果.后来为了方便记忆,就将用0.1序列表示的机器指令都用符号助记 ...