但是当信息的长度超过窗口的大小时,就会覆盖窗口的边缘
下面是我自己写的实现代码,请各位大神帮忙看看有什么问题!谢谢!
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 wdg*erDetailInfo::resizeEvent(QResizeEvent *event){
QWidget::resizeEvent(event);
layoutUI();
}
m_pWdgDescriptionInfo->setGeometry(GIS_*ER_DETAIL_FIRST_COLUMN_WIDTH, m_pLabelDescription->y(),
m_pWdgDetailInfo->width()-GIS_*ER_DETAIL_FIRST_COLUMN_WIDTH, m_pLabelDescription->height());
m_pLabelDescriptionText->setFixedWidth(m_pWdgDetailInfo->width()-GIS_*ER_DETAIL_FIRST_COLUMN_WIDTH-10);
m_pLabelDescriptionText->adjustSize(); //信息显示窗口自适应
m_pLabelDescriptionText->setText(qbRYXX.getJYAQ()); //写入信息
//鼠标实现事件
void wdg*erDetailInfo::mousePressEvent(QMouseEvent* event)
{
if (event->button() == Qt::LeftButton)
{
m_bPress = true;
m_ptPointPos = event->pos();
}
}
void wdg*erDetailInfo::mouseReleaseEvent(QMouseEvent* event)
{
if (event->button() == Qt::LeftButton)
{
m_bPress = false;
}
}
void wdg*erDetailInfo::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);
}
}
5 个解决方案
#1
怎么位置全是靠算的??
可能是你位置和label的宽度没算对,如果布局应该是没问题的
m_pWdgDetailInfo->setMargin(int); 可以试一下
可能是你位置和label的宽度没算对,如果布局应该是没问题的
m_pWdgDetailInfo->setMargin(int); 可以试一下
#2
这个不是设置边白的吗?
#3
m_pWdgDescriptionInfo = new QLabel(m_pWdgDetailInfo); // 大窗口
m_pLabelDescriptionText = new QLabel(m_pWdgDescriptionInfo); //子窗口
不好意思这两句注释错了
应该是:
m_pWdgDescriptionInfo = new QLabel(m_pWdgDetailInfo); // 大窗口里的子窗口
m_pLabelDescriptionText = new QLabel(m_pWdgDescriptionInfo); //子窗口里的信息
m_pLabelDescriptionText = new QLabel(m_pWdgDescriptionInfo); //子窗口
不好意思这两句注释错了
应该是:
m_pWdgDescriptionInfo = new QLabel(m_pWdgDetailInfo); // 大窗口里的子窗口
m_pLabelDescriptionText = new QLabel(m_pWdgDescriptionInfo); //子窗口里的信息
#4
你不是布局的,应该是位置没算好。你把label的宽度设置小一点看看,设置一个最大值
我本来是想在你信息的m_pLabelDescriptionText,设置一点margin,并不能解决你算错的问题,只是能让字到中间来点,可能不覆盖边缘
#5
虽然现在还是没解决,不过很感谢帮助!
#1
怎么位置全是靠算的??
可能是你位置和label的宽度没算对,如果布局应该是没问题的
m_pWdgDetailInfo->setMargin(int); 可以试一下
可能是你位置和label的宽度没算对,如果布局应该是没问题的
m_pWdgDetailInfo->setMargin(int); 可以试一下
#2
这个不是设置边白的吗?
#3
m_pWdgDescriptionInfo = new QLabel(m_pWdgDetailInfo); // 大窗口
m_pLabelDescriptionText = new QLabel(m_pWdgDescriptionInfo); //子窗口
不好意思这两句注释错了
应该是:
m_pWdgDescriptionInfo = new QLabel(m_pWdgDetailInfo); // 大窗口里的子窗口
m_pLabelDescriptionText = new QLabel(m_pWdgDescriptionInfo); //子窗口里的信息
m_pLabelDescriptionText = new QLabel(m_pWdgDescriptionInfo); //子窗口
不好意思这两句注释错了
应该是:
m_pWdgDescriptionInfo = new QLabel(m_pWdgDetailInfo); // 大窗口里的子窗口
m_pLabelDescriptionText = new QLabel(m_pWdgDescriptionInfo); //子窗口里的信息
#4
你不是布局的,应该是位置没算好。你把label的宽度设置小一点看看,设置一个最大值
我本来是想在你信息的m_pLabelDescriptionText,设置一点margin,并不能解决你算错的问题,只是能让字到中间来点,可能不覆盖边缘
#5
虽然现在还是没解决,不过很感谢帮助!