我从代码中添加了一个按钮而不是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和插槽来测试它,但它失败了。所以我没有添加代码以便于阅读。 谢谢你的阅读。
答案 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