在一个窗体中打开另一个窗体
1通过designer创建窗体form1
2通过designer创建窗体form2
3在窗体form1的源代码中
#include "Form1Dialogh"
#include "Form2Dialogh"
Form1Dialog::Form1Dialog(QWidget parent): QDialog(parent)
{
setupUi(this);
QObject::connect(pushButton,SIGNAL(clicked()),this,SLOT(showForm2()));
}
void MainDialog:: showForm2()
{
Form2Dialog newform(this);
newformexec();
}
窗体回退的时候,只要在form2里关闭自己,就会回到前一个窗体(form1)了(因为前一窗体并没有关闭)
#窗体A
public
partial
class
A
:
Form
{
private
void
Form1_Load(object
sender,
EventArgs
e)
{
B
b
=
new
B();
if
(bShowDialog()
==
DialogResultOK)
{
//对话结果为OK的时候显示隐藏按钮
thisbtnHiddenVisible
=
true;
}
}
}
#窗体B
public
partial
class
B
:
Form
{
private
void
btnOK_Click(object
sender,
EventArgs
e)
{
//对话框结果设置为OK
thisDialogResult
=
DialogResultOK;
thisClose();
}
}
/简单的说,推荐你使用两个主窗体加一个登录窗体的做法,老师说用if判断?貌似很简单,那我就按简单的说了(不考虑数据库连接了,见谅):
在Programcs文件中把最后一行代码中new后面那个单词换成你登录窗体的名字(怕打错就复制)。
然后在登录窗体中加入一个控件:ComboBox,和一个Label控件,将Label的Text属性改为:登录类型,然后双击登录主窗体写入下代码:/
ComboBox1ItemsAdd("管理员VIP"); //这里ComboBox1可以改成你的名字
ComboBox1ItemsAdd("普通用户"); //加入两个选项到ComboBox控件里
ComboBox1SelectedIndex=0; //启动时默认选中第一个选项
ComboBox1DropDownStyle=ComboBoxStyleDropDownList; //只能选不能输入
//然后回到设计界面上,双击那个登录按钮,写如下代码:
if(ComboBox1SelectedTextEquals("管理员VIP"))
{
frmAdmin fa=new frmAdmin(); //这里是显示你管理员功能页面的语句
faShow(); //frmAdmin是你起得窗口名字,可能是form1
}
else
{
frmComon fc=new frmComon(); //同理显示普通功能页面
fcShow();
}
/解释:如果if你选的不是管理员,else就是普通用户,只有这两种情况。因为你会发现,你的ComboBox是只能选不能输入的:)不懂的你继续追问,共同学习哦! /
C#中实现窗体间传值
1、VS
2005的Visual
C#
Windows应用程序和Visual
C#智能设备Pocket
PC
2003设备应用程序。假设我们需要点击主窗体FMMain中的某一个按钮时打开子窗体FMChild并将某一个值传给子窗体FMChild,一般情况下,我们点击按钮显示子窗体FMChild的代码为:
FMChild
fmChild
=
new
FMChild();
fmChildShowDialog();
fmChildDispose();
如果我们需要将主窗体FMMain中的string
strValueA的值传给FMChild,那么我们首先对strValueA进行如下处理:
private
string
strValueA;
public
string
StrValueA
{
get
{
return
strValueA;
}
set
{
strValueA
=
value;
}
}
使其成为主窗体FMMain的一个属性,接着修改显示子窗体的代码为以下两种的其中一种。方法一:
FMChild
fmChild
=
new
FMChild();
fmChildShowDialog(this);
fmChildDispose();
方法二:
FMChild
fmChild
=
new
FMChild();
FMChildOwner
=
this;
fmChildShowDialog();
fmChildDispose();
然后在修改子窗体FMChild中申明一个主窗体FMMain对象,
FMMain
fmMain;
在需要使用主窗体FMMain的string
strValueA的地方加上如下代码:
fmMain
=
(FMMain)thisOwner;
这样,就可以获得主窗体FMMain中strValueA的值了。这时,如果你需要将子窗体FMChild中的string
strValueB传给主窗体FMMain,同样处理string
strValueB。
private
string
strValueB;
public
string
StrValueB
{
get
{
return
strValueB;
}
set
{
strValueB
=
value;
}
}
那么你在关闭子窗体代码fmChildDispose();后,可以写一些代码来保存或者处理FMChild的strValueB,例如:
string
strTmp
=
fmChildStrValueB;
注意,在Visual
C#智能设备Pocket
PC
2003设备应用程序中显示子窗体FMChild只能使用:
FMChild
fmChild
=
new
FMChild();
FMChildOwner
=
this;
fmChildShowDialog();
fmChildDispose();
在Visual
C#智能设备Pocket
PC
2003的设备应用程序中ShowDialog()没有重载。
参考资料:
>
以上就是关于qt 多窗体跳转问题全部的内容,包括:qt 多窗体跳转问题、Winform窗体跳转问题、用Visual Studio中的c#window应用程序如何做页面跳转等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)