Closed. This question is not reproducible or was caused by typos。它当前不接受答案。
想改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。
4年前关闭。
Improve this question
我有以下类声明:
在
因为我只想从
问题是第二个
另外:是否有更好的解决方案来连接具有不同参数类型的信号和插槽?我认为使用“中间”功能(例如
编辑:
父类是
与
和连接应该工作。
想改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。
4年前关闭。
Improve this question
我有以下类声明:
class nets_list : public QDockWidget
{
Q_OBJECT
private:
QListView * files;
public slots:
void SelectNet(QModelIndex i);
signals:
void NetSelected(QString t);
public:
nets_list(QWidget * parent = nullptr);
};
在
nets_list
构造函数中的某个时刻,我想将clicked(QModelIndex)
成员的files
信号连接到类的父级中的NetRunner(QString)
插槽:bool x1 = connect(files, SIGNAL(clicked(QModelIndex)), this, SLOT(SelectNet(QModelIndex)));
bool x2 = connect(this, SIGNAL(NetSelected(QString)), parent, SLOT(NetRunner(QString)));
SelectNet()
的代码如下:void nets_list::SelectNet(QModelIndex i)
{
emit NetSelected(fs->fileName(i));
}
因为我只想从
QString
参数中提取一个QModelIndex
,以便可以在父类中调用该广告位。问题是第二个
connect
调用返回false(bool x2
似乎为false)。为什么?另外:是否有更好的解决方案来连接具有不同参数类型的信号和插槽?我认为使用“中间”功能(例如
SelectNet(QModelIndex)
插槽)是一个很好的解决方案。编辑:
父类是
class MW : public QMainWindow
{
Q_OBJECT
private:
QMenu * net_menu;
QMenuBar * menu_bar;
QStackedWidget * ctrl;
netBuilderWidget * builder;
netTrainerWidget * trainer;
netRunnerWidget * runner;
nets_list * nets_dock;
public slots:
void netBuilder();
void netTrainer();
void netRunner(QString t);
void addNet();
public:
MW();
QSize minimumSizeHint() const Q_DECL_OVERRIDE;
QSize sizeHint() const Q_DECL_OVERRIDE;
};
最佳答案
更换
SLOT(NetRunner(QString))
与
SLOT(netRunner(QString))
和连接应该工作。