首页 > 代码库 > 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(); /*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>
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();
/*QT对C++的拓展 QT对C++的拓展 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); /* 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>
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)