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



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

//下面的参数表示第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();

}


运行结果:

时间: 2024-12-17 16:38:26

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

在代码中设置组件位置(marginTop,marginBottom,margin等)

View  myView = (View) findViewById(R.id...); // 获得组件的布局参数 LayoutParams  params = myView.getLayoutParams(); // 这里比如要改变marginTop属性 int newTopMargin = 100; params.topMargin = newTopMargin; // 然后就可以把新的值设回去了 myView.setLayoutParams(params);

UI组件:布局管理器

一.线性布局(LinearLayout) 线性布局可以让布局中的组件一个接着一个的连在一起水平对齐(orientation="vertical")或者垂直对齐(orientation="horizontal"),写游戏界面时会限制动作,所以不推荐游戏界面中使用 特点:线性布局不会主动换行,当几个组件水平分布,但是这一行放不下时,多余的不会显示 二.绝对布局(AbsoluteLayout) 绝对布局没有布局控制,组件的大小和位置全部由开发人员用x,y坐标来一一定义,由

java常用组件以及布局管理器

Swing组件按功能来分,可以分为如下几类: ?  顶层容器:JFrame.JApplet.JDialog和JWindow ?  中间容器:JPanel.JScrollPane.JSplitPane.JToolBar ?  特殊容器:在用户界面上有特殊作用的中间容器,如:JInternalFrame.JRootPane.JLayeredPane和JDestopPane ?  基本组件:JButton.JComboBox.JList.JMenu.JSlider ?  不可编辑信息的显示组件:向用户

Java SE (1)之 JFrame 组件 GridLayout布局

package com.sunzhiyan; import java.awt.*; import javax.swing.*; public class Demo_2 extends JFrame{ /** * @param args */ JButton jb[] = new JButton[10]; public static void main(String[] args) { // TODO Auto-generated method stub Demo_2 demo = new Dem

Java SE (1)之 JFrame 组件 BorderLayout 布局

JAVA 初期,练习SE ,桌面程序, package com.sunzhiyan; import java.awt.*; import java.awt.event.*; import javax.swing.*; //引入 AWT 包 和swing public class Demo_1 extends JFrame{ /** * @param args */ JButton button1,button2,button3; public static void main(String[]

SAP系统取消用户设置ALV全局布局

文章为原创,转载请联系我,欢迎交流[email protected] 大部分情况下,ALV布局由关键用户或者系统管理员控制,一般用户不需要改变布局. SAP取消用户设置ALV全局布局 具有权限对象S_ALV_LAYO且其值为23时用户可以更改全局布局,即更改后所有用户的那个页面的布局跟着改变 先查找哪些角色包含改权限对象 T-code:/nsuim 更改其值 双击查到的角色 CTRL + F 输入 S_ALV_LAYO 授权对象:S_ALV_LAYO,取消该授权对象23的权限,用户将不可设置全局

javascript获取以及设置光标位置

一. 获取光标位置: // 获取光标位置 function getCursortPosition (textDom) { var cursorPos = 0; if (document.selection) { // IE Support textDom.focus (); var selectRange = document.selection.createRange(); selectRange.moveStart ('character', -textDom.value.length);

自定义UICollectionViewController之后 如何设置UICollectionView的布局方式

我们很多时候使用UICollectionView 可能都是直接创建 UICollectionView   通过初始化的时候  传入一个布局对象的方式来使用UICollectionView 比如我们之前是这样写得: 1 UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; 2 3 UICollectionView *collection = [[UICollectionView alloc]

自定义UICollectionViewController之后 如何设置UICollectionView的布局方式--备用

我们很多时候使用UICollectionView 可能都是直接创建 UICollectionView   通过初始化的时候  传入一个布局对象的方式来使用UICollectionView 比如我们之前是这样写得: 1 UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; 2 3 UICollectionView *collection = [[UICollectionView alloc]