• 5020阅读
  • 4回复

可以同时两个控件exec嘛?路过的兄弟们进来看看 [复制链接]

上一主题 下一主题
离线qnewert
 
只看楼主 倒序阅读 楼主  发表于: 2012-05-05
大侠们,又来麻烦你们了。
我做一个播放器,用libvlc和qt设计的。基本功能做好以后,我就想添加一个网络接收部分
主框架在一个libvlc-on-qt.h和libvlc-on-qt.cpp中。
主框架是Player,udp地址输入框架是UdpInputDlg;菜单栏里面有一个选项是接收网络流,当点击它的时候,会弹出另外一个控件界面,用来输入广播地址和端口号,QAction如下:
void Player::udpSetAddressSlot()
479 {
480     UdpInputDlg udpDlg;//广播Ip地址和端口号输入控件。
481     QString udp_mrl;
482     udpDlg.exec();
483     bool ok=true;
484     while(ok)
485     {                                                                                                                                                                        
486         if(udpDlg.addrChanged==true)
487         {
488             udpAddrString=udpDlg.ipString;
489             udpPortNum=udpDlg.portNum;
490             ok=false;
491             break;
492         }
493     }
           ...........
          play(udp_mrl);//Player中的public函数,播放功能
         .............


}
UdpInputDlg控件的slot如下,当按下ok键时,读取地址和端口,并且设置更改标志。
void UdpInputDlg::slotOkButton()
72 {
73     if(ipChanged)
74         ipString=ipAddrLabel->text();
75     if(portChanged)
76         portNum=portLine->value();
77     addrChanged=true;
78
79     close();//关闭
80
81 }
82
83 void UdpInputDlg::slotCancelButton()
84 {
85     addrChanged=false;
86
87     close();//关闭
88 }          

图示结构如下:



中间那个小框框就是UdpInputDlg输入控件。
每次我点击确定之后,该控件关闭,然后主界面上的其他按键就无法动弹了,点击关闭按钮也不会响应。
我想请教大家,是不是两个控件发生冲突了?

qt,第一眼见到你,就深深的爱上你了。
离线qnewert
只看该作者 1楼 发表于: 2012-05-05
正常播放本地文件是play能够很好的完成任务。
但是当每次点击UdpInputDlg中的确定按钮后调用play就弹出段错误,这个是为何呢?就算我后面设置play的是本地文件,也同样弹出段错误,如果点击确定后,action后面什么都不做,就不会发生错误。所以我想,是不是因为在这个action中调用了play这个函数造成的,但是又想不出具体错误在哪?
play函数绝对是没错的。
问题可能就出在这两个界面是否发生冲突了?
qt,第一眼见到你,就深深的爱上你了。
离线benbenmajia

只看该作者 2楼 发表于: 2012-05-05
自己手动连接两个button就可以了
安然.....
离线qnewert
只看该作者 3楼 发表于: 2012-05-05
回 2楼(benbenmajia) 的帖子
兄台,能否具体些?本人比较笨。
qt,第一眼见到你,就深深的爱上你了。
离线benbenmajia

只看该作者 4楼 发表于: 2012-05-07
回 3楼(qnewert) 的帖子
我估计你这里应该是在main()函数哪里进入死循环了,自己调试下看看
安然.....
快速回复
限100 字节
 
上一个 下一个