首页 > 解决方案 > 在插槽和信号中使用 QVector 指针

问题描述

抱歉打扰,我试图将 QVector 作为指针从 MainWindow 传递到对话框,代码正在运行,但输出显示: QObject::connect: No such slot SystrayDialog::receiveSystrayIcons(<QVector<SystrayIconsData>*)

我还不了解有关信号和插槽的所有内容,正在做练习以很好地理解,请找到我的代码:

主窗口.h

...
signals:
    // transmit objects to dialogs here
    void emitSystrayIcons(QVector<systrayIconsData> *icons);
...

主窗口.cpp

...
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
...
// initialize Systray Settings Window Dialog
    sDialog = new SystrayDialog(this);

    // Create Connectors from and to dialog here
    connect(this, SIGNAL(emitSystrayIcons(QVector<systrayIconsData>*)), sDialog, SLOT(receiveSystrayIcons(QVector<SystrayIconsData>*)));
}
// Slots
void MainWindow::showSystraySettingsDialog()
{
    sDialog->setModal(false);
    //sDialog->setAttribute(Qt::WA_DeleteOnClose);
    sDialog->show();
    sDialog->raise();
    sDialog->activateWindow();
}
...

系统托盘对话框.h

class SystrayDialog : public QDialog
{
    Q_OBJECT
...
// Icon Datas
    QVector<systrayIconsData> *stIcons;
...
private slots:
    // receive objects/data from MainWindow or other component here
    void receiveSystrayIcons(QVector<systrayIconsData> *icons);
}

系统托盘对话框.cpp

...
// Slots
void SystrayDialog::receiveSystrayIcons(QVector<systrayIconsData> *icons)
{
    stIcons = new QVector<systrayIconsData>();
    stIcons = icons;
}
...

在此先感谢您的帮助 !

标签: c++qtsignals-slots

解决方案


推荐阅读