按钮
#include <QApplication> /*应用程序抽象类*/ #include <QWidget> //窗口类 #include <QPushButton> //按钮 int main(int argc, char* argv[]) { QApplication app(argc, argv); //应用程序 QWidget w; //构造窗口对象 没有父窗口的窗口为主窗口 w.setWindowTitle("Hello World"); w.show(); //显示窗口 QPushButton button; //子窗口 button.setText("button"); //按钮也是窗口 button.setParent(&w); //将button放入w 窗口对象的父子关系 影响显示位置 button.show(); //先显示w再显示button,顺序不同显示效果不同 //Qt对C++的拓展 参数1为QObject子类对象, 前两个为信号,后两个为槽 QObject::connect(&button, SIGNAL(clicked()), &w, SLOT(close())); return app.exec(); //exec 有信息循环,死循环,窗口不会不见 } //控件是个窗口
声明一个窗口,声明一个按钮(按钮本身是一个窗口),设置窗口对象的父子关系(影响显示位置),信号槽设置(button)
出现名为“Hello World”的窗口,单击”button“按钮,窗口消失。
输入框
1 #include <QApplication> /*应用程序抽象类*/ 2 3 #include <QWidget> //窗口类 4 #include <QCompleter> 5 #include <QLineEdit> //输入框 6 7 int main(int argc, char* argv[]) 8 { 9 QApplication app(argc, argv); //应用程序 10 11 QWidget w; //构造窗口对象 没有父窗口的窗口为主窗口 12 13 QLineEdit edit; 14 15 edit.setParent(&w); 16 17 /*输入密码模式*/ 18 edit.setEchoMode(QLineEdit::PasswordEchoOnEdit); 19 edit.setPlaceholderText("Please input text:");//输入提示 20 /* 21 QCompleter completer(QStringList () << "112358");//提示内容 22 completer.setFilterMode(Qt::MatchContains); //包含提示中的元素则显示提示 23 edit.setCompleter(&completer); 24 */ 25 w.show(); //显示窗口 26 27 edit.show(); 28 29 w.setWindowTitle("Hello World"); 30 31 return app.exec(); //exec 有信息循环,死循环,窗口不会不见 32 } 33 34 //控件是个窗口
声明输入框,设置输入密码模式,并提供 输入提示。
输入密码前有提示,输入密码后隐藏密码。
注释18~19行代码,显示21~23行代码
输入时包含提示中的元素则显示提示
通过坐标设置按钮位置
1 #include <QApplication> /*应用程序抽象类*/ 2 #include <QWidget> //窗口类 3 #include <QPushButton> //按钮 4 5 int main(int argc, char* argv[]) 6 { 7 QApplication app(argc, argv); //应用程序 8 9 QWidget w; //构造窗口对象 没有父窗口的窗口为主窗口 10 11 w.show(); //显示窗口 12 QPushButton button; //子窗口 13 button.setText("button"); //按钮也是窗口 14 button.setParent(&w); //将button放入w 窗口对象的父子关系 影响显示位置 15 button.show(); //先显示w再显示button,顺序不同显示效果不同 16 17 button.setGeometry(30, 30, 100, 30);//在父窗口中的位置 18 19 //Qt对C++的拓展 参数1为QObject子类对象, 前两个为信号,后两个为槽 20 QObject::connect(&button, SIGNAL(clicked()), &w, SLOT(close())); 21 22 w.setWindowTitle("Hello World"); 23 24 return app.exec(); //exec 有信息循环,死循环,窗口不会不见 25 } 26 27 28 //控件是个窗口
button.setGeometry(30, 30, 100, 30);
前两个参数为在父窗口的位置,后两个参数为按钮的长和宽。
通过网格设置位置
1 #include <QApplication> /*应用程序抽象类*/ 2 #include <QWidget> //窗口类 3 #include <QPushButton> //按钮 4 #include <QLineEdit> 5 #include <QVBoxLayout> // V 竖直 6 #include <QHBoxLayout> // H 水平 7 #include <QGridLayout> //格子 8 #include <QLabel> 9 10 11 int main(int argc, char* argv[]) 12 { 13 QApplication app(argc, argv); //应用程序 14 15 QWidget w; //构造窗口对象 没有父窗口的窗口为主窗口 16 17 QGridLayout layout; 18 QLineEdit* password; 19 layout.setColumnStretch(3,1); //右 ,第三列,比重为1 20 layout.setRowStretch(4 ,1); //有坐标,不需要考虑先后顺序 ,下 第4行,比重为1 21 layout.setColumnStretch(0,1); //左 22 layout.setRowStretch(0,1); //上 23 24 layout.addWidget(new QLabel("Username:"),1,1); //(1,1)位置 25 layout.addWidget(new QLineEdit(), 1, 2); 26 layout.addWidget(new QLabel("PassWord:"), 2, 1); 27 28 layout.addWidget(password = new QLineEdit(), 2, 2); 29 password->setEchoMode(QLineEdit::Password); 30 31 /*将水平的 hBox 加到网格的 layout 中 */ 32 QHBoxLayout* hBox; //水平 33 layout.addLayout(hBox = new QHBoxLayout, 3, 2); /*将水平的 hBox 加到网格的 layout 中 */ 34 hBox->addStretch(1);// 水平 左边先加弹簧 35 hBox->addWidget(new QPushButton("登录"));//再加button 36 37 w.show(); //显示窗口 38 w.setLayout(&layout); //放在w.show()之前 39 w.setWindowTitle("Hello World"); 40 41 return app.exec(); //exec 有信息循环,死循环,窗口不会不见 42 } 43 44 //控件是个窗口
layout.setColumnStretch(3,1);表示在第3列放入一个比重为1的弹簧。
layout.setRowStretch(4 ,1); 第4行