我想使用connect将一个qml按钮与同一个类的cpp函数连接起来,但是它不起作用。
我试了一下:
窗口{height:100;width 200;
Button{
width:100
height: 100
onclicked {TestWindow.setbtStart(btStart.checked)}
}
}
在CPP中:
#包括<; QDebug>; #包括<; iostream>;
TestWindow::TestWindow(QObject *parent) : QObject(parent)
{
connect(this, SIGNAL(btStartChanged(bool)), this ,SLOT(play(void)) );
}
void TestWindow::play(void)
{
qDebug() << "Hello world\n";
}
bool TestWindow::btStart() const
{
return m_btStart;
}
void TestWindow::setbtStart(bool btStart)
{
if (m_btStart == btStart)
return;
m_btStart = btStart;
emit btStartChanged(m_btStart);
}
但是当我点击按钮时它并没有调用播放功能,我怎么能做到这一点呢?
您必须连接到类的实例,如下所示:
Button{
width:100
height: 100
onclicked {testWindow.setbtStart(btStart.checked)}
}
TestWindow {
id: testWindow
}
当然,您的类需要注册qml才能使用它。 有关更多信息,请查看以下内容:
https://doc.qt.io/qt-5.14/qtqml-cppintegration-definetypes.html
在QML文件中使用C++类变量
您还必须确保您想要连接的函数可以从QML访问。 为此,您只需将其定义为插槽。