繁体   English   中英

从qt4设计的自定义槽生成h文件

[英]Custom Slot from qt4 design generated h file

嗨,我尝试用qt4设计器生成的h文件制作一个自定义插槽,我看到了标准插槽的制作方法,但我想“一旦学习了这一步”就运行了终端命令,并将其输出到文本框中,我尝试用一​​个我可以在其中的命令替换过去的()插槽这是h文件文件,效果很好,但是...上面的问题''试图理解流程。第二天,所以任何指针都很糟糕。 所以这是我要评论的地方,我认为我应该工作..但是整天都没有成功。

#ifndef SWEETGUIFORMQ19488_H
#define SWEETGUIFORMQ19488_H

#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QDialogButtonBox>
#include <QtGui/QHeaderView>
#include <QtGui/QTextEdit>
#include <QtGui/QVBoxLayout>
#include <QtGui/QWidget>

QT_BEGIN_NAMESPACE

class Ui_SweetGuiForm
{
public:
    QVBoxLayout *verticalLayout_2;
    QVBoxLayout *verticalLayout;
    QTextEdit *textEdit;
    QDialogButtonBox *buttonBox;

    void setupUi(QWidget *SweetGuiForm)
    {
        if (SweetGuiForm->objectName().isEmpty())
            SweetGuiForm->setObjectName(QString::fromUtf8("SweetGuiForm"));
        SweetGuiForm->resize(511, 275);
        verticalLayout_2 = new QVBoxLayout(SweetGuiForm);
        verticalLayout_2->setObjectName(QString::fromUtf8("verticalLayout_2"));
        verticalLayout = new QVBoxLayout();
        verticalLayout->setObjectName(QString::fromUtf8("verticalLayout"));
        textEdit = new QTextEdit(SweetGuiForm);
        textEdit->setObjectName(QString::fromUtf8("textEdit"));

        verticalLayout->addWidget(textEdit);

        buttonBox = new QDialogButtonBox(SweetGuiForm);
        buttonBox->setObjectName(QString::fromUtf8("buttonBox"));
        buttonBox->setStandardButtons(QDialogButtonBox::Cancel|QDialogButtonBox::Ok);

        verticalLayout->addWidget(buttonBox);


        verticalLayout_2->addLayout(verticalLayout);

        QWidget::setTabOrder(textEdit, buttonBox);

        retranslateUi(SweetGuiForm);
        QObject::connect(buttonBox, SIGNAL(rejected()), SweetGuiForm, SLOT(close()));

好的,在这里我想我可以用on_buttonBox_accepted()替换paste(),请更正我,我现在仍然在问问题,但是我在哪里正确使用该函数? 我应该在一个名为sweetguiform.cpp的文件中进行该操作吗? 这是我失去的地方。.help .. QObject :: connect(buttonBox,SIGNAL(accepted()),textEdit,SLOT(paste()));

        QMetaObject::connectSlotsByName(SweetGuiForm);
    } // setupUi

    void retranslateUi(QWidget *SweetGuiForm)
    {
        SweetGuiForm->setWindowTitle(QApplication::translate("SweetGuiForm", "Form", 0, QApplication::UnicodeUTF8));
    } // retranslateUi

};
namespace Ui {
    class SweetGuiForm: public Ui_SweetGuiForm {};
} // namespace Ui

QT_END_NAMESPACE

#endif // SWEETGUIFORMQ19488_H

全新时,这是做事的方式吗?

我认为您不应该编辑Qt为您生成的头文件。 相反,您应该编写自己的标头/实现文件,其中包括此自动生成的标头,并在那里建立信号插槽连接。 例如:

#include "ui_SweetGuiForm.h"

class SweetGuiForm : public QWidget
{
public:
    SweetGuiForm( ): ui( new Ui::SweetGuiForm )
    {
        ui->setupUi( this );
    }

public slots:
    void on_buttonBox_accepted( )
    {
        // your code here
    }

protected:
    Ui::SweetGuiForm* ui;
};

Qt将找到on_buttonBox_accepted方法并为您设置信号插槽连接,因此您不必调用QObject::connect

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM