J'ai donc deux formulaires dans mon projet: MainWindow et Options Form (OptForm; QWidget
); Maintenant, je crée (en faisant simplement glisser vers un formulaire) un QPushButton
dans MainWindow pour ouvrir OptForm, et en passant des variables, que OptForm peut changer.C++/Qt: passage des variables à modifier dans la classe
void MainWindow::openOpt() //Slot; QPushButton calls(?) it
{
OptForm w (this->variable1,this->variable2, this);
w.show();
}
constructeur OptForm est:
OptForm::OptForm(bool & variable1, bool & variable2, QWidget *parent)
: QWidget (parent)
{
variable1Pointer = &variable1;
variable2Pointer = &variable2;
ui.setupUi(this);
}
options.h a:
class OptForm : public QWidget
{
Q_OBJECT
public:
OptForm(bool & variable1, bool & variable2, QWidget *parent)
//Pointers for encrypt and verbose
bool * variable1Pointer;
bool * variable2Pointer;
public slots:
void change_variable1();
void change_variable2();
private:
Ui::OptForm ui;
};
Maintenant, void change_variable1();
et void change_variable2();
change booléens à true
ou false
.
Maintenant, dans ces fonctions ont une ligne que je this->*variable1Pointer = true;
Et j'obtiens l'erreur du compilateur: '((OptForm*)this)->OptForm::variable1Pointer' cannot be used as a member pointer, since it is of type 'bool*'
Comment puis-je obtenir les choses? (FIXE, MERCI)
Autre chose dont j'ai besoin, c'est de laisser savoir à MainWindow, quand OptForm est fermé, de vérifier si les options ont changé. Alors, où dois-je placer ce code? Dans openOpt
, ou créer un emplacement, qui sera exécuté (?), Lorsque OptForm se ferme? Comment puis-je envoyer un signal à MainWindow alors?
Merci d'avance. (Je suppose que j'ai foiré les choses assez bien)
Ok, erreur du compilateur fixe, mais maintenant, quand je presse cette fenêtre de bouton appers et se ferme immédiatement:/
Est-ce supposé être un dialogue modal? – strager
Non, QWidget avec quelques trucs dedans. –
@EdgeLuxe, Comment le formulaire est-il montré? À partir du code que vous avez donné, le formulaire est détruit à la fin de 'MainWindow :: openOpt' en raison de RAII. – strager