C++ QConnect通过Qt Creater在QCombobox上找不到这样的插槽 我创建了一个从QWidget 我为那个窗口设置了一个网格布局 我在该窗口的公共插槽中创建了一个名为handleRoChange(int index)的函数 我添加了一个Qcombobox来调用函数handleRoChange(int index)
我一直在说:C++ QConnect通过Qt Creater在QCombobox上找不到这样的插槽 我创建了一个从QWidget 我为那个窗口设置了一个网格布局 我在该窗口的公共插槽中创建了一个名为handleRoChange(int index)的函数 我添加了一个Qcombobox来调用函数handleRoChange(int index),c++,qt,C++,Qt,我一直在说: **QObject::connect: No such slot QWidget::handleHeroChange(int) in ../Testing/Window.cpp:92** 我做错了什么 代码: //Window.h class Window : public QWidget { QGraphicsPixmapItem* avatar; QGraphicsTextItem* heroNameItem;
**QObject::connect: No such slot QWidget::handleHeroChange(int) in ../Testing/Window.cpp:92**
我做错了什么
代码:
//Window.h
class Window : public QWidget
{
QGraphicsPixmapItem* avatar;
QGraphicsTextItem* heroNameItem;
QGraphicsTextItem* heroStrItem;
QGraphicsTextItem* heroDexItem;
QGraphicsTextItem* herointelItem;
public:
Window(QWidget *parent = 0);
public slots:
void handleHeroChange(int);
};
//Window.cpp
Window::Window(QWidget *parent)
: QWidget(parent)
{
QGridLayout *grid = new QGridLayout(this);
QComboBox *comboHeroClass = new QComboBox();
comboHeroClass->addItem("Witcher");
comboHeroClass->addItem("Maurander");
comboHeroClass->setCurrentIndex(1);
grid->addWidget(comboHeroClass, 2,3,1,1);
QComboBox::connect(comboHeroClass, SIGNAL(currentIndexChanged(int)),this, SLOT(handleHeroChange(int)));
}
void Window::handleHeroChange(int index){
QPixmap myImage;
if(index == 0){
}else if(index == 1){
}
}
将不带分号的Q_对象宏添加到类中并重新生成项目
没有这个宏,moc就找不到你的类,也不会创建你的槽(和其他一些东西),这就是为什么你会出现错误:你看到你的槽,但它不存在,你会出现运行时错误在这里发布你的头文件并写入QObject::connect@Chernobyl写QObject::connect是什么意思?我认为这已经足够了:QComboBox::connect(comboHeroClass,SIGNAL(currentIndexChanged(int)),this,SLOT(HandleRoChange(int));请发布标题文件。@Chernobyl已经完成了,先生!请提供帮助。由于您继承自
QWidget
,这是一个QObject
,您可以使用connect(…)
。我只是将Q_对象放在那样的位置,它不会编译。上面写着::-1:错误:没有找到架构x86_64;的符号。我以前从未见过这个错误,所以很遗憾,在这里我帮不了你。请看其他答案,也许你们会找到解决办法,但不要认为当你们添加宏时你们做错了什么,不!所有使用信号和插槽的类都需要这个宏。我告诉过你们重建项目,也许我们彼此不了解,但现在一切都好了,所以很好)是的!谢谢你,伙计。重建不起作用。我必须去构建并选择qmake。
class Window : public QWidget
{
Q_OBJECT