【发布时间】:2010-08-08 10:27:26
【问题描述】:
所以我的项目中有两个表单:MainWindow 和 Options Form (OptForm;QWidget);
现在,我在 MainWindow 中创建(只需拖动到窗体)QPushButton 以打开 OptForm,并传入变量,OptForm 可以更改。
void MainWindow::openOpt() //Slot; QPushButton calls(?) it
{
OptForm w (this->variable1,this->variable2, this);
w.show();
}
OptForm 构造函数是:
OptForm::OptForm(bool & variable1, bool & variable2, QWidget *parent)
: QWidget (parent)
{
variable1Pointer = &variable1;
variable2Pointer = &variable2;
ui.setupUi(this);
}
options.h 有:
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;
};
现在,void change_variable1(); 和 void change_variable2(); 将布尔值更改为 true 或 false。
现在,在这些函数中,我有一行
this->*variable1Pointer = true;
我得到编译器错误:
'((OptForm*)this)->OptForm::variable1Pointer' cannot be used as a member pointer, since it is of type 'bool*'
我怎样才能把事情做好? (已修复,谢谢)
我需要的另一件事是让 MainWindow 知道,当 OptForm 关闭时,检查选项是否已更改。那么,我应该把这段代码放在哪里?在openOpt 中,或者创建一个插槽,当 OptForm 关闭时将执行(?)?那么如何向 MainWindow 发送信号呢?
提前致谢。 (我想我把事情搞砸了)
好的,编译器错误已修复,但现在,当我按下该按钮时,窗口立即出现并关闭:/
【问题讨论】:
-
这应该是一个模态对话框吗?
-
不,QWidget 里面有一些东西。
-
@EdgeLuxe,那么表单是如何显示的呢?根据您提供的代码,由于 RAII,表格在
MainWindow::openOpt的末尾被销毁。 -
我不知道做我提到的事情的正确方法,这就是我粘贴所有功能的原因。那么如何正确显示选项窗口呢?
-
猜猜我明白了。解决方案是创建一个析构函数。