我的程序主
窗口是QMainWindow类, 子窗口有QVideowidget(
播放器屏幕) 和QDockwidget(播放列表)和Qwidget(播放状态控制窗口)等,三个子窗口。结果在
调试显示的时候,三个窗口重叠在一起,我在主窗口的cpp文件中加入了layout布局控件,结果一样
没有效果,所以请假各位,能否有好的解决方法??
程序如下:
{
resize(1000,700);
// setWindowOpacity(0.0); //设置窗口不透明
QPalette p = palette();
p.setColor(backgroundRole(), QColor(0, 0, 0, 32));
setPalette(p);
/*********初始化对象********/
pscreen = new PlayerScreen(this); //播放器的屏幕
setCentralWidget(pscreen); //设置屏幕为正中间
plistwidget = new PlayListWidget ("PlayList",this); //播放列表
plistwidget->setAllowedAreas(Qt::RightDockWidgetArea);
//plistwidget->setMaximumWidth(180);
//addDockWidget(Qt::RightDockWidgetArea,plistwidget);
//让列表靠在最右边
pstatus = new PlayStatus(this); //播放状态控制
mediaplayer = new QMediaPlayer(0,0); //解析播放媒体
mediaplayer->setVideoOutput(pscreen);
/*********初始化对象********/
/*********为窗口部件************/
/********方案一********/
QVBoxLayout *vboxlaout = new QVBoxLayout(this);
vboxlaout->addWidget(pscreen);
vboxlaout->addWidget(pstatus);
setLayout(vboxlaout);
QHBoxLayout *hboxlaout = new QHBoxLayout(this) ;
hboxlaout->addLayout(vboxlaout);
hboxlaout->addWidget(plistwidget);
setLayout(hboxlaout);
QVBoxLayout *vboxlaout2 = new QVBoxLayout;
vboxlaout2->addLayout(hboxlaout);
vboxlaout2->addWidget(this);
setLayout(hboxlaout);
/********方案一********/
/*******方案二*******/
/*
QGridLayout *gridlayout = new QGridLayout(this) ;
gridlayout->addWidget(pscreen,0,0,2,2);
gridlayout->addWidget(plistwidget,0,2,3,1);
gridlayout->addWidget(pstatus,2,0,1,2);
this->setLayout(gridlayout);
*/
/*******方案二*******/
/*********为窗口部件************/
}
程序运行结果图: