我想知道在Qt中使用信号/槽的以下哪种方式是正确的。
我需要有多个对话框实例,即
我已经使选项1按以下方式工作:
我需要有多个对话框实例,即
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");
这个对吗?
谢谢!