2010-12-14 115 views
2

这应该很容易。
我使用Qt Creator的,我已经做了Qt Gui Application(即有main.hmain.uimain.cpp在Qt中显示表格

我刚刚创建了一个Qt Designer Form Class也有一个头文件,用户界面,以及一类。 我做了一个动作我main.cpp称为ShowSecondForm内:

void Main::ShowSecondForm() 
{ 

} 

每次我执行ShowSecondForm();我要显示的第二种形式。
我在里面放什么,所以我的表单会打开?
此外,是可以传递一个字符串的形式,而打开它?像ShowSecondForm(const QString&)

的一些注意事项,可以帮助您:

  • 我想有2种形式在同一时间打开。
  • 它也将是一个类,因为它会计算不同的东西。

回答

2

如果你从另一个打开一个表格,你可能想要做这样的事情:

m_form = new MyForm (this); 
m_form->show(); 

在这里,你首先要创建窗体对象,然后显示它。注意this作为父母传递 - 当父表单被销毁时,孩子将被自动关闭并销毁。这也意味着你不需要在析构函数中进行清理。如果你需要打开几个表单,你将需要一个对象。

m_form1 = new MyForm (this); 
m_form1->show(); 
m_form2 = new MyForm (this); 
m_form2->show(); 

最后,有很多方法可以将字符串传递给表单。这是你的表单,所以你可能想要修改它的构造函数,以便它在创建时接受字符串,如m_form = new MyForm ("Some string", this);或者你可能想要添加一个属性到你的表单。有时候,你也可能想用QObject的内置财产制,看看QObject::setProperty()QObject::property()的功能。

+0

你好Septagram! m_form = new MyForm(this);将创建一个新的表单。我使用QtDesigner创建了一个表单。我想要的只是显示我创建的表单。该表单称为form2.ui,它有一个form2.h和一个form2.cpp文件,因为它不仅仅是一个表单,而且还是一个类。 – Sharethefun 2010-12-14 07:25:52

+0

在设计师中,你创建了一个类。一个班级就像你实际使用的形式的蓝图。但要使用它,您需要创建该类的_object_。看看myform2.h并用我的例子中的MyForm替换form2.h中的类名(我想它是Form2)。然后创建并打开您与设计师制作的表单。 – Septagram 2010-12-14 07:39:47

0

我怀疑this tutorial可能会有所帮助。大概你有一个main.ui,一个main.h和一个main.cpp。

在你的main.ui文件上运行uic程序,生成你的ui_main.h头文件(如果你不使用qmake的话),但是基本的设置在本教程中。

+0

我认为该示例只使用一种形式.. 当我创建我的第二个表单时,qt自动创建了所需的所有文件,声明和方法。我只是问如何显示我使用动作创建的第二个窗体。选中ShowSecondForm();我希望每次执行此功能时,都要显示第二种形式。 – Sharethefun 2010-12-14 07:00:06

+0

ui系统只是将布局等附加到现有的QWidget上,所以如果您想交替使用它们,请为每个QWidget提供一个不同的QWidget并显示/隐藏它们。 – jkerian 2010-12-14 07:30:47