Je voudrais savoir lequel de ce qui suit est la bonne façon de faire chose avec signal/slot dans Qt. J'ai besoin d'un moyen d'avoir plusieurs instances d'un dialogue, par exemple A
et B
Et je dois dire A
pour imprimer "A" et B
pour imprimer "B" à partir d'un fil différent. Donc, je crois que je besoin de quelque chose comme soit:Qt signal à l'emplacement de l'objet spécifique
OPTION 1)A->print("A")
et B->print("B")
ou est-il préférable de le faire:
OPTION 2)emit print("A")
et emit print("B")
et utiliser d'une manière que je ne sais pas si seulement A
attraper le "A" et seulement B
attraper le "B".
j'ai eu l'option 1 travail comme celui-ci:
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);
}
et tout ce que je dois faire est:
myClass* instanceA = new myClass();
myClass* instanceB = new myClass();
instanceA->doPrint("A");
instanceB->doPrint("B");
est ce droit?
Merci!
Entre Nous allez du côté opposé de votre question. Dans quel cas vous pouvez vous sentir à l'aise avec l'option 2?Peut-on dire un exemple où le deuxième cas a un avantage si la seule chose que vous voulez est d'imprimer "A" et "B"? – Narek