我试图将我的函数作为Qt中的函数插槽调用,但是我不知道该怎么做。
似乎以下方法是错误的:

更新:
根据一个答案,我更新了我的源代码,但是显然还是有问题。尝试编译此代码段会导致以下错误:







分别在Visual Studio 2010中。

#include <QtGui/QApplication>
#include <QPushButton>
#include <QObject>
#include <QMessageBox>

class myclass;
int main(int argc,char *argv[])
{
    QApplication a(argc,argv);

    QPushButton btnshowmessage("show");
    myclass *my=new myclass();
    QObject::connect(&btnshowmessage,SIGNAL(clicked()),my,SLOT(warningmessage()));
    btnshowmessage.show();
    return a.exec();
}
//////////////////////////////////////////////////////////////////////////
class myclass: public QObject
{
Q_OBJECT
public:myclass(){}

        public slots:
            void warningmessage()
            {
                QMessageBox::warning(0,"Warning","Test Message!",QMessageBox::Ok);
            }
};

最佳答案

您可以使用信号和插槽将一个对象的信号连接到另一个对象的插槽。每个信号或插槽都应在一个类之内,该类也必须从QObject类派生并包含Q_OBJECT宏。

因此,为了使您的代码正常工作,请将插槽放入您的某些类中:

class MySlotClass:public QObject
{
Q_OBJECT
public slots:
void MyFunction()
    {
        QMessageBox::warning(0,"WarningTest","This is a waring text message",QMessageBox::Ok);
    }
}

并像这样连接:
MySlotClass m = new MySlotClass();
Qobject::connect(&btnShowaMessageBox,SIGNAL(clicked()), &m ,SLOT(MyFunction()));

关于c++ - 如何在qtslot中调用我的函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12108283/

10-15 01:30