在这段代码中,connect函数的第三个参数使用了错误的对象。你应该将信号与主窗口对象(this
)连接,而不是&window
。
修正后的代码如下:
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
~MainWindow();
QWidget window;
QVBoxLayout* layout = new QVBoxLayout(&window); // 创建垂直布局
QLabel* label = new QLabel("你今天开心吗?", &window); // 创建标签,显示文本
QPushButton* button1 = new QPushButton("是的", &window); // 创建按钮
QPushButton* button2 = new QPushButton("不开心", &window);
MainWindow(QWidget *parent = nullptr) : QMainWindow(parent)
{
connect(button1, &QPushButton::clicked, this, &MainWindow::handleButtonClick1);
connect(button2, &QPushButton::clicked, this, &MainWindow::handleButtonClick2);
layout->addWidget(label); // 将标签添加到布局中
layout->addWidget(button1); // 将按钮添加到布局中
layout->addWidget(button2); // 将按钮添加到布局中
setCentralWidget(&window); // 设置窗口的中央部件为上述垂直布局窗口
}
private:
Ui::MainWindow *ui;
public slots:
void handleButtonClick1(); //"是的"(按钮)处理函数
void handleButtonClick2(); //"不开心"(按钮)处理函数
};
请确保在MainWindow
类中定义了名为handleButtonClick1
和handleButtonClick2
的槽函数,并将其声明为public slots
。
内容由零声教学AI助手提供,问题来源于学员提问