我想知道以下哪一项是在 Qt 中处理信号/插槽的正确方法。
我需要一种方法来拥有 Dialog 的多个实例,即:A
和B
. 我需要告诉A
打印“A”并B
从不同的线程打印“B”。所以我相信我需要类似的东西:
选项 1) A->print("A")
和B->print("B")
还是这样做更好:
选项 2) emit print("A")
并且emit print("B")
使用我不知道的方式,所以只A
抓住“A”,只B
抓住“B”。
我的选项 1 是这样工作的:
class myClass : public QMainWindow
{
Q_OBJECT
public:
myClass (QWidget *parent = 0, Qt::WFlags flags = 0);
~myClass ();
void doPrint(char* text)
{
emit mySignal(text);
}
private:
Ui::myClass ui;
public slots:
void newLog(char* msg);
signals:
void mySignal(char* msg);
};
myClass::myClass(QWidget *parent, Qt::WFlags flags) : QMainWindow(parent, flags)
{
ui.setupUi(this);
connect(this, SIGNAL(mySignal(char*)), this, SLOT(newLog(char*)));
}
void myClass::newLog(char* msg)
{
ui.textEdit->append(msg);
}
然后我要做的就是:
myClass* instanceA = new myClass();
myClass* instanceB = new myClass();
instanceA->doPrint("A");
instanceB->doPrint("B");
这是正确的吗?
谢谢!