从代码添加时,qt按钮无法单击

时间:2017-02-15 03:58:41

标签: c++ qt

我从代码中添加了一个按钮而不是GUI。编译时不会出现错误,但按钮无法单击。这是代码:

// mainwindow.h

#include <QMainWindow>
#include <QtNetwork/QTcpSocket>
#include <QString>
#include <QDataStream>
#include <QByteArray>
#include <QtWidgets>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    void OnMsgSignal(const QString& tep2);
    void testForSocket();
    ~MainWindow();
    void readDataF();

private:
    Ui::MainWindow *ui;
    QString dataForTime;
    QPushButton *pushForTime;
};

// mainwidow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
#include <QWidget>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    pushForTime=new QPushButton(this);
    pushForTime->setText("点击获取时间");
    pushForTime->setGeometry(20,20,80,20);
    pushForTime->setEnabled(true);
    ui->setupUi(this);
}

我添加singal和插槽来测试它,但它失败了。所以我没有添加代码以便于阅读。 谢谢你的阅读。

2 个答案:

答案 0 :(得分:1)

你是以错误的顺序做到的。

首先,向newR添加一个大按钮,然后通过调用if-else以UI形式重新初始化QMainWindow'GUI,它将使用界面元素替换现有按钮来自您的UI文件。

尝试将此额外按钮添加到以UI形式存在的布局中。例如:

QMainWindow

因此它将被添加到从UI表单初始化的gui元素中。

答案 1 :(得分:0)

您的按钮可能位于其他小部件下(很可能是WHERE (m_section_id = 1 AND v_employee_id = '02001' AND registration_date = '2017-02-13' AND (delete_by => nil OR delete_by < 1)) ORDER BY的中央小部件)。在初始化按钮之前,首先在构造函数中调用.。这应该解决它。您仍应将按钮添加到布局中。现在我不知道你是否在设计师中设置了一个布局,但是如果你还没有,那么就将布局设置到主窗口的中央部件:

ASC LIMIT 1

在此之后,只需按照您的方式创建按钮并将其添加到布局中:

tdest_tmp = TDestBoard.where("m_section_id = ? AND v_employee_id = ? AND registration_date = ? AND (delete_by => nil OR delete_by < ?)", primary_section.m_section_id, params[:id], params[:tdaily_dates]["#{id}"], 1).first