Qt 5.4.1学习(1)


工程名称:TestQt1


界面效果

最终实现了使用代码动态注册按钮事件的功能,并且可以支持在按钮当中获取sender



main.cpp

#include "windowmain.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    WindowMain w;
    w.show();

    return a.exec();
}


windowmain.h

#ifndef WINDOWMAIN_H
#define WINDOWMAIN_H

#include <QMainWindow>
#include <QPushButton>

namespace Ui {
class WindowMain;
}

class WindowMain : public QMainWindow
{
    Q_OBJECT

public:
    explicit WindowMain(QWidget *parent = 0);
    ~WindowMain();

    bool init();

private slots:

    void on_pushButton_clicked();

    void onClickUi();

private:
    Ui::WindowMain *ui;

    QPushButton* _btn2;
};

#endif // WINDOWMAIN_H

windowmain.cpp

#include "windowmain.h"
#include "ui_windowmain.h"

WindowMain::WindowMain(QWidget *parent)
    :QMainWindow(parent),
    ui(new Ui::WindowMain)
{
    ui->setupUi(this);

    init();
}

WindowMain::~WindowMain()
{
    delete ui;A
}

bool WindowMain::init()
{
    _btn2 = ui->btn2;

    // 关闭按钮的连发
    //_btn2->setAutoRepeat(false);

    QObject::connect(_btn2,  SIGNAL(clicked()), this, SLOT(onClickUi()) );

    return true;
}

void WindowMain::on_pushButton_clicked()
{
    qDebug("onClicked test1 !");
}

void WindowMain::onClickUi()
{
    QPushButton* btn= qobject_cast<QPushButton*>(sender());
    if( btn->objectName() == "btn2")
    {
        qDebug("onClicked btn2 !");
    }

}

windowmain.ui

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>WindowMain</class>
 <widget class="QMainWindow" name="WindowMain">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>806</width>
    <height>556</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>WindowMain</string>
  </property>
  <widget class="QWidget" name="centralWidget">
   <widget class="QPushButton" name="pushButton">
    <property name="geometry">
     <rect>
      <x>100</x>
      <y>280</y>
      <width>91</width>
      <height>41</height>
     </rect>
    </property>
    <property name="text">
     <string>test1</string>
    </property>
   </widget>
   <widget class="QPushButton" name="btn2">
    <property name="geometry">
     <rect>
      <x>220</x>
      <y>280</y>
      <width>91</width>
      <height>41</height>
     </rect>
    </property>
    <property name="text">
     <string>test2</string>
    </property>
   </widget>
  </widget>
  <widget class="QMenuBar" name="menuBar">
   <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
     <width>806</width>
     <height>23</height>
    </rect>
   </property>
  </widget>
  <widget class="QToolBar" name="mainToolBar">
   <attribute name="toolBarArea">
    <enum>TopToolBarArea</enum>
   </attribute>
   <attribute name="toolBarBreak">
    <bool>false</bool>
   </attribute>
  </widget>
  <widget class="QStatusBar" name="statusBar"/>
 </widget>
 <layoutdefault spacing="6" margin="11"/>
 <resources/>
 <connections/>
</ui>




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值