zoukankan      html  css  js  c++  java
  • 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行

    
    

  • 相关阅读:
    【题解】SDOI2015序列统计
    【合集】有标号的DAG图计数(合集)
    【题解】有标号的DAG计数4
    【题解】有标号的DAG计数3
    【题解】有标号的DAG计数2
    【题解】有标号的DAG计数1
    【题解】歌唱王国(概率生成函数+KMP)+伦讲的求方差
    【题解】CTS2019珍珠(二项式反演+卷积)
    【题解】餐巾计划问题
    【题解】数字梯形问题
  • 原文地址:https://www.cnblogs.com/112358nizhipeng/p/9270849.html
Copyright © 2011-2022 走看看