确保在将QPushButton添加到QGraphicsProxyWidget之前,将其设置为可点击的,并设置适当的大小。以下是修复问题的示例代码:
#include <QApplication>
#include <QGraphicsView>
#include <QGraphicsScene>
#include <QGraphicsProxyWidget>
#include <QPushButton>
#include <QDebug>
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
// 创建按钮
QPushButton* button = new QPushButton("Click Me");
// 设置按钮可点击
button->setCheckable(true);
// 设置按钮大小
button->setFixedSize(100, 30);
// 创建场景和视图
QGraphicsScene* scene = new QGraphicsScene();
QGraphicsView* view = new QGraphicsView(scene);
// 将按钮放入代理小部件中
QGraphicsProxyWidget* proxyWidget = scene->addWidget(button);
// 连接按钮的clicked信号到自定义函数
QObject::connect(button, &QPushButton::clicked, [&]() {
qDebug() << "Button Clicked!";
if (button->isChecked()) {
qDebug() << "Button is checked!";
} else {
qDebug() << "Button is unchecked!";
}
// 切换按钮状态(checked与unchecked)
button->setChecked(!button->isChecked());
});
// 显示视图
view->show();
return app.exec();
}
通过调用button->setCheckable(true)
,我们将按钮设置为可选中的。并使用button->setChecked(!button->isChecked())
来切换按钮的状态。
这样,当单击按钮时,就会触发clicked信号,并在控制台打印相应信息。
内容由零声教学AI助手提供,问题来源于学员提问