首页 > 代码库 > 1QPushButton的使用,QLineEdit的使用,设置组件位置,布局(QHBoxLayout,QGridLayout)

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();
 
    /*QTC++的拓展*/
    //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>

 

intmain(intargc,char*argv[])

{

   QApplicationapp(argc,argv);

 

   /*构造一个窗口*/

   QWidgetw;

 

   QLineEditedit;

   edit.show();

   edit.setParent(&w);

 

   /*输入密码*/

   /*

   edit.setEchoMode(QLineEdit::PasswordEchoOnEdit);

   edit.text();

   edit.setPlaceholderText("Pleaseinputtext:");

   */

 

   QCompletercompleter(QStringList()<<"aab"<<"123"<<"998");

   completer.setFilterMode(Qt::MatchContains);

   edit.setCompleter(&completer);

 

   //显示窗口

   w.show();

 

   /*QTC++的拓展

   QTC++的拓展

   std::bindstd::function

   QObject::connect(&button,SIGNAL(clicked()),&w,SLOT(close()));

   */

 

   w.setWindowTitle("HelloWorld");

 

   /*exec中有一个消息循环*/

   returnapp.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);
 
    /* QTC++的拓展 */
    //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>

 

intmain(intargc,char*argv[])

{

   QApplicationapp(argc,argv);

 

   /*构造一个窗口*/

   QWidget*window=newQWidget;

 

   /*按钮也是个窗口*/

   //QPushButtonbutton;

   //button.setText("Button");

   /*窗口对象的父子关系,影响显示位置*/

   /*没有父窗口的窗口,我们称之为主窗口*/

   QHBoxLayout*layout=newQHBoxLayout;

 

   QPushButton*button1=newQPushButton("One");

   QPushButton*button2=newQPushButton("Two");

   QPushButton*button3=newQPushButton("Three");

   QPushButton*button4=newQPushButton("Four");

   QPushButton*button5=newQPushButton("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();

 

   returnapp.exec();

}

运行结果:

8 QGridLayout表格布局

/*应用程序抽象类*/

#include<QApplication>

 

/*窗口类*/

#include<QWidget>

 

/*按钮*/

#include<QPushButton>

#include<QLineEdit>

#include<QGridLayout>

 

intmain(intargc,char*argv[])

{

   QApplicationapp(argc,argv);

 

   /*构造一个窗口*/

   QWidget*window=newQWidget;

   /*按钮也是一个窗口*/

   QPushButtonbutton;

   button.setText("Button");

   button.show();

 

   QLineEditedit;

   edit.setParent(window);

 

   //表格布局

   QGridLayout*layout=newQGridLayout;

   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(newQPushButton("1,0"),2,1);

   layout->addWidget(newQPushButton("1,1"),2,2);

 

   //voidaddWidget(QWidget*,introw,intcolumn,

   //              introwSpan,intcolumnSpan,Qt::Alignment=0);

   //下面的参数表示第3行,第2列,占1行,合并2

   layout->addWidget(newQPushButton("aaa"),3,1,1,2);

 

   window->setLayout(layout);

   window->show();

 

   returnapp.exec();

}

运行结果:

9模拟并编写一个登录窗口

/*应用程序抽象类*/

#include<QApplication>

 

/*窗口类*/

#include<QWidget>

 

/*按钮*/

#include<QPushButton>

#include<QLineEdit>

#include<QLabel>

#include<QGridLayout>

 

intmain(intargc,char*argv[])

{

   QApplicationapp(argc,argv);

 

   /*构造一个窗口*/

   QWidget*window=newQWidget;

 

   QGridLayoutlayout;

   QLineEdit*password;

   layout.setColumnStretch(3,1);

   layout.setRowStretch(4,1);

   layout.setColumnStretch(0,1);

   layout.setRowStretch(0,1);

 

   layout.addWidget(newQLabel("Username:"),1,1);

   layout.addWidget(newQLineEdit(),1,2);

   layout.addWidget(newQLabel("Password:"),2,1);

   layout.addWidget(password=newQLineEdit(),2,2);

 

   QHBoxLayout*hBox;

   //表示在第三行,占用2

   layout.addLayout(hBox=newQHBoxLayout,3,2);

   //加一个弹簧,让它向右偏移

   hBox->addStretch(1);

   hBox->addWidget(newQPushButton("Login"));

 

   window->setLayout(&layout);

   window->show();

 

   returnapp.exec();

}

运行结果:

 

 

 

 

 

 

 

 

 

 

 

 

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