• 5877阅读
  • 1回复

两个widget重叠的问题。 [复制链接]

上一主题 下一主题
离线koko200147
 

只看楼主 倒序阅读 楼主  发表于: 2009-07-23
我在主窗口上放了gridlayout,label,Button各一个,label和Button在gridlayout里,又新加一个coverlabel,我的想法是点按钮的时候将coverlabel放在原来的label上面,正好覆盖住。但是现在我取不到label的位置,得到的只是它的尺寸,怎么得到label在mainwindow中的位置?

代码如下:


MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent), ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    ui->gridLayout->setAlignment(parent,Qt::AlignLeft);
    ui->gridLayout->addWidget(ui->pushButton,0,0);
    ui->gridLayout->addWidget(ui->label,1,0,6,6);
    this->setLayout(ui->gridLayout);

    ui->coverLabel->setHidden(true);
    ui->label->setFrameStyle(QFrame::Box);
    ui->label->setLineWidth(2);

}



void MainWindow::on_pushButton_clicked()
{
    ui->coverLabel->setHidden(false);
    QRect rt = ui->label->frameRect();
    QRect ttt = this->geometry();
    QRect y = ui->gridLayout->geometry();
    QRect e3 = this->ui->gridLayout->cellRect(1,0);//e3.y1
    ui->coverLabel->setAlignment(Qt::AlignLeft);
    ui->coverLabel->setFrameStyle(QFrame::Box);
    ui->coverLabel->setLineWidth(2);

    rt.adjust(9,e3.top()+9,9,e3.top()+9);
    ui->coverLabel->setGeometry(rt);

}
离线koko200147

只看该作者 1楼 发表于: 2009-07-23
自问自答了。下面的代码可以实现
    ui->coverLabel->setHidden(false);
    QRect rt = ui->label->frameRect();
    int x = ui->gridLayoutWidget->x();
    int y = ui->gridLayoutWidget->y();
    QRect e3 = this->ui->gridLayout->cellRect(1,0);
    ui->coverLabel->setAlignment(Qt::AlignLeft);
    ui->coverLabel->setFrameStyle(QFrame::Box);
    ui->coverLabel->setLineWidth(2);

    rt.adjust(x,e3.top()+y,x,e3.top()+y);
    ui->coverLabel->setGeometry(rt);
快速回复
限100 字节
 
上一个 下一个