30/09/2018, 21:39

Qt không hoạt động với slot tự tạo?

Tôi không dùng Design để tạo Ui nhưng tới bước xử lý bấm vào button thì có vẻ mọi chuyện không suôn sẻ như lúc dùng Design. Tôi đã xem qua moc file của Qt tạo ra trong cả 2 trường hợp dùng và không dùng Design. Cả 2 có vẻ như giống hệt nhau.

Đây là code của tôi:
main.cpp:

#include <QApplication>
#include "TestSomething.h"

int main(int argc, char *argv[])
{
	QApplication app(argc, argv);

	TestSomething* ui = new TestSomething();
	ui->show();
	
	return app.exec();
}

TestSomething.h:

#pragma once

#include <QWidget>

class QPushButton;
class QLabel;

class TestSomething : public QWidget
{
	Q_OBJECT

public:
	TestSomething(QWidget* parent = NULL);
	~TestSomething();

private slots:
	void on_button_clicked();

private:
	QPushButton* button;
	QLabel* label;
};

TestSomething.cpp

#include "TestSomething.h"
#include <QPushButton>
#include <QLabel>


TestSomething::TestSomething(QWidget *parent) : QWidget(parent)
{
	button = new QPushButton("button", this);
	label = new QLabel("Label");
}


TestSomething::~TestSomething()
{
	delete this;
}

void TestSomething::on_button_clicked(){
	label->show();
}

Tôi hiểu về signal và slot nhưng trong trường hợp này tôi không muốn dùng connect.
Xin mọi người giải thích giùm.
Nếu có thể thì xin mọi người chỉ giáo thêm về cách xử lý event trong Qt kiểu giống như setOnClickListener trong Java.
Cảm ơn rất nhiều!

Quân viết 23:49 ngày 30/09/2018

bạn muốn nhận event click nhưng lại k muốn connect slot với button, vậy làm thế nào để button đó biết cần phải gửi event tới on_button_clicked() khi click, giả sử có nhiều slot thì nó biết phải gửi cho slot nào, tự nhiên bạn tự làm khó mình ra

Nguyễn Văn Dũng viết 23:46 ngày 30/09/2018

À cái này là do mình muốn giải quyết 1 vấn đề theo nhiều cách thôi. Mình biết là sẽ có cách nhưng mình chưa đụng tới phần xử lý Event nên cũng chưa biết cách để giải quyết.

Bài liên quan
0