我在主窗口有一个widget或者其他控件,我在主窗口show()了一个dialog。我想在这个dialog中复制一个主窗口的内容。希望他们能共享数据,这样我在dialog或者主窗口上进行操作的时候,两边都会同时改变。
我刚开始用指针的方法并不能实现,不知道大家有没有什么好的办法呢?
其实不完全是这个意思。大概就是我在主窗口有一个QWidget,然后在出窗口show()出了一个新的dialog窗口,我在这个窗口中使用大概这样的句子:ui->widget->layout()->addwidget(); 吧主窗口的QWidget 给传进这个dialog了。但是原来的主窗口的QWIdget 就不见了。同理,我发现这个QWidget只能在一个地方显示一次。我希望它能在主窗口显示的同时,又能在子窗口的dialog中显示出来。按道理他们应该应该会共享一份数据,两边操作都会影响对方。
window.opener.document.getElementById 获取主窗口的内容。。
代码忘了用代码片段了。重新写下方便楼主看
父页面
<script type="text/javascript">
function myDialog(){
var arr=new Array(2);//创建数据
arr[0]="参数1";//添加参数
arr[1]="参数2";//添加参数
var url="dialog.html";//设置URL
var layout="dialogWidth=500px;dialogHeight=25px;scroll=no;status=no;help=no;center=yes";//设置Dialog布局样式
var son=window.showModalDialog(url,arr,layout);//设置son获取Dialog传递过来的值
alert(son);//弹出返回值
}
</script>
<input type="button" value="弹出对话框" onclick="myDialog()"/>
dialog
<script type="text/javascript">
function readParent(){
var arr=window.dialogArguments;//获取父传递的数组
for(var i=0;i<arr.length;i++){//遍历参数
alert(arr[i]);//输出参数
}
}
function result(){
window.returnValue="设置子窗口返回的值";
this.close();//关闭窗口
}
</script>
<input type="button" value="关闭并返回参数" onclick="result()"/>
<input type="button" value="读取父窗口的参数" onclick="readParent()"/>
window.dialogArguments表示父窗口对象,
例如你想获取父窗口的id='userId'的值->window.dialogArguments.getElementById('userId').value;
然后如果是弹出层要传值给父窗口则使用,或者父窗口直接url带参传递也是可以的
window.returnValue="设置子窗口返回的值";
this.close();//关闭窗口
这样就可以传递了。
下面是完整的案例
父窗口:
<br> function myDialog(){<br> var arr=new Array(2);//创建数据<br> arr[0]="参数1";//添加参数<br> arr[1]="参数2";//添加参数<br> var url="dialog.html";//设置URL<br> var layout="dialogWidth=500px;dialogHeight=25px;scroll=no;status=no;help=no;center=yes";//设置Dialog布局样式<br> var son=window.showModalDialog(url,arr,layout);//设置son获取Dialog传递过来的值<br> alert(son);//弹出返回值</p> <pre><code>} </code></pre> <p>
弹出窗口:
function readParent(){ var arr=window.dialogArguments;//获取父传递的数组 for(var i=0;i<arr.length;i++){//遍历参数 alert(arr[i]);//输出参数 } } function result(){ window.returnValue="设置子窗口返回的值"; this.close();//关闭窗口 }以上纯JavaScript技术实现。
另外如果传递的不是一个字符串而是别的比如object对象也是可以的。父窗口则使用son.属性名获取
window.local.innerHtml=parnet.body.innHtml; 再加一个setTimeout 来循环就行了
共用一个setting属性应该可以吧