|
楼主 |
发表于 2003-7-19 23:18:46
|
显示全部楼层
通过对虚函数drawContents重载后,基本实现了。
但又出现新问题,那就是随着鼠标在上面的移动,左边的图出现闪动!
不应该出现这种情况,不知我在哪儿做错了?
现将代码上传,请大侠指教:
void CMainMenu::drawContents (QPainter* p)
{
QMenuItemListIt it(*mitems);
QMenuItem *mi = 0;
int row = 0;
int maxPMWidth=200;
int x = contentsRect().x();
int y = contentsRect().y();
int itemw = contentsRect().width();
QSize sz;
while ( (mi=it.current()) )
{
int itemh = itemHeight( mi );
sz = style().sizeFromContents(QStyle::CT_PopupMenuItem, this,
QSize(0, itemh), QStyleOption(mi,maxPMWidth,0));
sz = sz.expandedTo(QSize(itemw, sz.height()));
itemw = sz.width();
itemh = sz.height();
if ( !mi->widget() )
drawItem( p, 0, mi, row == actItem, x+m_szBitmapSize.width (), y, itemw-m_szBitmapSize.width (), itemh );
y += itemh;
++row;
++it;
}
p->drawPixmap (QRect(0,0,m_szBitmapSize.width (),height()),m_Bitmap);
} |
|