当前位置: 代码迷 >> QT开发 >> 要被自己蠢哭了,特来求教一个布局的有关问题
  详细解决方案

要被自己蠢哭了,特来求教一个布局的有关问题

热度:249   发布时间:2016-04-25 02:52:50.0
要被自己蠢哭了,特来求教一个布局的问题
不管怎么弄,布局上的标签都那么大,怎么破。

附上源代码,求大神拯救。

#include "index.h"
#include <QGridLayout>

Index::Index(QWidget *parent)
    : QWidget(parent)
{
    setWindowTitle("清爽音乐播放器");
    setGeometry(90,90,400,600);
    music=new QMediaPlayer(this);
    nameLabel=new QLabel("未选择歌曲");
    slide=new QSlider(Qt::Horizontal);
    slide->setValue(0);
    backBtn=new QPushButton("后退");
    forwardBtn=new QPushButton("快进");
    pauseBtn=new QPushButton("暂停");
    list=new QListView;
    openFileBtn=new QPushButton("打开");
    connect(openFileBtn,SIGNAL(clicked(bool)),this,SLOT(addFiles()));
    QVBoxLayout *vLayout=new QVBoxLayout();
    vLayout->addWidget(nameLabel,1,Qt::AlignCenter);
    vLayout->setSpacing(5);
    vLayout->setMargin(10);
    vLayout->addWidget(slide,Qt::AlignCenter);
    QHBoxLayout *hLayout=new QHBoxLayout();
    hLayout->addWidget(backBtn,Qt::AlignLeft);
    hLayout->addWidget(pauseBtn,Qt::AlignCenter);
    hLayout->addWidget(forwardBtn,Qt::AlignRight);
    QGridLayout *mainLayout=new QGridLayout(this);
    mainLayout->addLayout(vLayout,0,0,Qt::AlignCenter);
    mainLayout->addLayout(hLayout,1,0,1,1,Qt::AlignCenter);
    mainLayout->addWidget(list,2,0,1,5,Qt::AlignCenter);
    mainLayout->setMargin(10);






}
void Index::addFiles()
{
    QString path=QFileDialog::getOpenFileName(this,"选择音乐文件","/");

    nameLabel->setText(path);
    music->setMedia(QUrl(path));
    music->play();
}

Index::~Index()
{

}


------解决思路----------------------
方法一:设置label的SizePolicy,就可以了
                nameLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
                list->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);

方法二:先把界面第三行水平布局,再纵向布局就可以了
                最后加一句vLayout->addStretch();
  相关解决方案