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> ? 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)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 联创股份是什么公司
- 下一篇: 2.QLabel,QPushButton