Qt5学习笔记

按钮

#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行

 

猜你喜欢

转载自www.cnblogs.com/112358nizhipeng/p/9270849.html