c++ - 在插槽和信号中使用 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;
}
...
在此先感谢您的帮助 !