窗体之间互相访问有关问题
窗体之间互相访问问题有两个窗体A和B。AC/C++ codeA::A{CreatDockWindows()//创建停靠面板,面板中加载窗口
窗体之间互相访问问题
有两个窗体A和B。
A
C/C++ codeA::A{ CreatDockWindows();//创建停靠面板,面板中加载窗口B,在B中有控件p_gsTreeList和函数getTreeList(); B temp; QTreeWidget * a = temp.getTreeList();//[color=#FF0000]访问B中的控件p_gsTreeList,为什么获取不了控件p_gsTreeList的指针?[/color]}//B中函数QTreeWidget * B::getTreeList(void){ return ui.p_gstTreeList;}
QTreeWidget * a = temp.getTreeList();//访问B中的控件p_gsTreeList,为什么获取不了控件p_gsTreeList的指针?}
[解决办法]看样子你是想在主窗口中调用子窗口上面的控件。
ui好像是私有成员,不能直接调用的吧。
你可以使用信号槽,上面时候要用到那个控件的时候发个信号:
emit _signal(你的List的指针);
用到List的时候用一个槽:
_slot(QTreeList *list)
{
使用List
}
也可以别托控件了,用代码写,把它设置成public就行了
[解决办法]可以这样的:
在子窗口里加一个pulic的函数
void emit_signal()
{
emit _signal(ui->ListView);
}
在主窗口里加一个槽函数
_slot(QTreeList *list)
{
使用List
}
在主窗口构造的时候
先connect()连接信号槽
然后调用下子窗口的emit_signal函数
这样就会去响应父窗口的槽函数_slot
效果和你在主窗口中直接调用_slot(如果能直接使用控件的话)是一样的
你觉得呢
[解决办法]就是说你自己触发下信号,然后执行槽
和直接执行效果是一样的
但是你现在不能直接调用,所以就用这种间接的方法。
[解决办法]c++ 的话,你要先在a里初始化b,或者在b类里定义一个指针指向整个b类
b.h:
public:
static b *pb;
b.cpp:
b *b::pb=NULL;
构造函数内 最后一行写 pb=this;
a里调用b的成员:
申明a头文件,b::pb->xx();
明白了么
[解决办法]ui.p_gstTreeList 本身就是个指针,还赋值给指针。。。
以上可以直接就调用了