zoukankan      html  css  js  c++  java
  • 简单QT应用了可实现手动布局QT应用

    
    1. 新建QT项目

    项目结构:

    2.打开QT图形编辑界面,通过拖动组件的方式生成例如以下界面:

    3.为确定button加入事件。

    选中buttonà转到槽。截图例如以下:

    点击clickedbutton,加入事件代码例如以下:

     

    4以下是手动编写一个QT案例:

    5.新建QT项目

    项目结构:

     

    编写widget.h头文件

    #ifndef WIDGET_H

    #define WIDGET_H

     

    #include <QWidget>

    #include <QPushButton>  //button相应的头文件

    #include <QVBoxLayout>  //布局,这个中布局让组件上下显示

    #include <QHBoxLayout>  //这个布局让组件水平显示

    #include <QGridLayout>  //Grid表格布局的头文件

    #include <QLineEdit>    //单行文本框相应的头文件

    #include <QLabel>      //Label相应的头文件

     

    class Widget : public QWidget

    {

        Q_OBJECT

     

    public:

        Widget(QWidget *parent= 0);

        ~Widget();

    private:

        QPushButton *btn1;   //定义一个button

        QHBoxLayout *layout1, *layout2;  //两个布局

        QVBoxLayout *layout3;

        QGridLayout *layout4;

        QLineEdit *edit1,*edit2,*edit3;

        QLabel *label1;

        QLabel *label2;

     

    private slots:  //这里表示的是事件

        void on_clicked();

    };

     

    #endif // WIDGET_H

     

    6.编写widget.cpp文件

    #include "widget.h"
     
    Widget::Widget(QWidget *parent)
        : QWidget(parent)
    {
        layout1 = new QHBoxLayout;
        layout2 = new QHBoxLayout;
        //layout3 = new QVBoxLayout(this);
        layout4 = new QGridLayout(this);
        btn1 = new QPushButton;
        edit1 = new QLineEdit;
        edit2 = new QLineEdit;
        edit3 = new QLineEdit;
        label1 = new QLabel;
        label2 = new QLabel;//这个控件没有不论什么父控件
     
        //第一种布局方式
    //    layout1->addWidget(btn1);
    //    layout1->addWidget(edit1);
    //    layout1->addWidget(edit2);
    //    layout1->addWidget(edit3);
    //    layout2->addWidget(label1);
    //    layout3->addLayout(layout1);
    //    layout3->addLayout(layout2);
     
        layout4->addWidget(btn1, 0, 0);
        layout4->addWidget(edit1, 0, 1);
        layout4->addWidget(edit2, 0, 2);
        layout4->addWidget(edit3, 1, 0);
        layout4->addWidget(label1, 1, 1);
        btn1->setText("确定");
     
        //当点击了btn1的时候就调用on_clicked()这个函数
        //实现控件与详细的槽函数关联
        connect(btn1, SIGNAL(clicked()), this, SLOT(on_clicked()));
    }
     
    Widget::~Widget()
    {
        //delete layout1;QT内部。不须要单独delete一个控件的指针
        //QT的窗体在退出的时候会自己主动delete他相关的子控件
        delete label2;
    }
     
    void Widget::on_clicked()
    {
        int a = edit1->text().toInt();
        int b = edit3->text().toInt();
        if (edit2->text() == "+")
            label1->setText(QString::number(a + b));
        if (edit2->text() == "-")
            label1->setText(QString::number(a - b));
        if (edit2->text() == "*")
            label1->setText(QString::number(a * b));
        if (edit2->text() == "/")
        {
            if (b != 0)
                label1->setText(QString::number(a / b));
        }
    }
    7.main.cpp文件
    #include "widget.h"
    #include <QApplication>
     
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        Widget w;
        w.show();
     
        return a.exec();
    }
    8.窗体的效果:

    版权声明:本文博客原创文章。博客,未经同意,不得转载。

  • 相关阅读:
    扫描线算法
    [Baltic 2001]Mars Maps
    Lost Cow
    李超线段树
    多种方法求解Pku3468 A Simple Problem with Integers
    陈老师的福利
    leetcode 673. 最长递增子序列的个数
    #10043.「一本通 2.2 例 1」剪花布条
    PTA7-1
    6-1 实验三哈夫曼树 (15分)
  • 原文地址:https://www.cnblogs.com/blfshiye/p/4647808.html
Copyright © 2011-2022 走看看