我想实现在一个包含有QLabel用来显示信息的子窗口,在移动鼠标的时候查看QLabel里显示不完整的信息,如下图所示
但是当信息的长度超过窗口的大小时,就会覆盖窗口的边缘
下面是我自己写的实现代码,请各位大神帮忙看看有什么问题!谢谢!
m_pWdgDescriptionInfo = new QLabel(m_pWdgDetailInfo); // 大窗口
m_pLabelDescriptionText = new QLabel(m_pWdgDescriptionInfo); //子窗口
//m_pLabelDescriptionText = new QTextEdit(m_pWdgDetailInfo); //子窗口里的信息显示子窗口
//自动换行
m_pLabelDescriptionText->setWordWrap(true);
m_pLabelDescriptionText->setAlignment(Qt::AlignCenter);
void wdgPrisonerDetailInfo::resizeEvent(QResizeEvent *event){
QWidget::resizeEvent(event);
layoutUI();
}
m_pWdgDescriptionInfo->setGeometry(GIS_PRISONER_DETAIL_FIRST_COLUMN_WIDTH, m_pLabelDescription->y(),
m_pWdgDetailInfo->width()-GIS_PRISONER_DETAIL_FIRST_COLUMN_WIDTH, m_pLabelDescription->height());
m_pLabelDescriptionText->setFixedWidth(m_pWdgDetailInfo->width()-GIS_PRISONER_DETAIL_FIRST_COLUMN_WIDTH-10);
m_pLabelDescriptionText->adjustSize(); //信息显示窗口自适应
m_pLabelDescriptionText->setText(qbRYXX.getJYAQ()); //写入信息
//鼠标实现事件
void wdgPrisonerDetailInfo::mousePressEvent(QMouseEvent* event)
{
if (event->button() == Qt::LeftButton)
{
m_bPress = true;
m_ptPointPos = event->pos();
}
}
void wdgPrisonerDetailInfo::mouseReleaseEvent(QMouseEvent* event)
{
if (event->button() == Qt::LeftButton)
{
m_bPress = false;
}
}
void wdgPrisonerDetailInfo::mouseMoveEvent(QMouseEvent* event)
{
if (m_bPress && m_pWdgDescriptionInfo->geometry().contains(m_ptPointPos))
{
int nMovePosY = event->pos().y() - m_ptPointPos.y();
if (m_pLabelDescriptionText->geometry().y()+ nMovePosY >= 0)
{
nMovePosY = 0;
}
if (m_pLabelDescriptionText->geometry().y() + m_pLabelDescriptionText->height() + nMovePosY < m_pWdgDescriptionInfo->height())
{
nMovePosY = 0;
}
m_pLabelDescriptionText->move(5, m_pLabelDescriptionText->geometry().y() + nMovePosY);
}
}