1. 程式人生 > 其它 >Qt中控制元件疊加懸浮顯示的兩種實現方法

Qt中控制元件疊加懸浮顯示的兩種實現方法

技術標籤:Qt開發qt

一是使用私有佈局,二是使用move函式,兩種方法實現效果類似

舉例:QTextEdit和QPushButton疊加,QPushButton顯示在QTextEdit內部,實現效果如圖:
在這裡插入圖片描述
私有佈局實現:

	QTextEdit* pEditTmp = new QTextEdit;
	QPushButton* pBtnTmp = new QPushButton(QString::fromLocal8Bit("複製"));

    QHBoxLayout* pEditTmpLayout = new QHBoxLayout(pEditTmp);
    pEditTmpLayout-
>setSpacing(0); pEditTmpLayout->setMargin(0); pEditTmpLayout->addWidget(pBtnTmp); pEditTmpLayout->setAlignment(pBtnTmp,Qt::AlignBottom | Qt::AlignRight); QVBoxLayout *pMainLayout = new QVBoxLayout(); pMainLayout->setMargin(50); pMainLayout->setSpacing(50); pMainLayout-
>addWidget(pEditTmp); pMainLayout->addStretch(); this->setLayout(pMainLayout);

move函式實現:

	QTextEdit* pEditTmp = new QTextEdit(this);
    pEditTmp->setFixedSize(250,220);
    QPushButton* pBtnTmp = new QPushButton;
    pBtnTmp->setText(QString::fromLocal8Bit("複製")
); pBtnTmp->setFixedSize(80,50); QVBoxLayout *pMainLayout = new QVBoxLayout(); pMainLayout->setMargin(180); pMainLayout->setSpacing(0); pMainLayout->addWidget(pBtnTmp); pMainLayout->addStretch(); pEditTmp->move(10,10); this->setLayout(pMainLayout);

使用注意點:

  • 私有佈局方式:一般在底部顯示的控制元件指定為佈局的父類指標, *QHBoxLayout pEditTmpLayout = new QHBoxLayout(pEditTmp);**在內部顯示的為子控制元件,子控制元件在私有佈局裡面新增設定,主佈局只需新增父控制元件,子控制元件自然就跟隨顯示,不需再次新增。
  • move函式實現:一般顯示在上面的控制元件要新增到主佈局中顯示,否則會被覆蓋,底部控制元件初始化時設定當前視窗父類指標,使用move函式設定座標移動到合適的位置即可。