QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 910|回复: 1

怎样用QT实现自画菜单

[复制链接]
发表于 2003-7-18 22:33:42 | 显示全部楼层 |阅读模式
小弟现在正在自学QT编程,现遇到一问题,请各位大侠帮助:
用QT怎样才能实现自画菜单?
自己想了两天,没想明白,十分痛苦,大侠救命!!!!!!!!!!!!!
 楼主| 发表于 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);
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-15 11:39 , Processed in 0.040644 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表