Qt3升级Qt4的Q3PopupMenu函数变化编译出错

mfh1314 2015-06-29 10:03:46
这段程序的功能是做一个颜色选择选择工具框
就是这个
点击右侧三角标可以弹出颜色选择窗口。
这段程序运行在Qt3环境没有问题,在Qt4中报错:

error C2664: “int QMenu::insertItem(const QString &,int,int)”: 不能将参数 1 从“Q3Frame *”转换为“const QString &”
1> 原因如下: 无法从“Q3Frame *”转换为“const QString”
1> 无构造函数可以接受源类型,或构造函数重载决策不明确


出问题的就是下面倒数第三行代码,请问Qt4有什么方法可以实现这个功能,解决这个问题?



/*!
\brief 初始增加弹出颜色菜单 //pen_mfh
*/

void CFuncColorButton::addPopMenu()
{
setPopupDelay( 0 );
setAutoRaise( TRUE );//鼠標懸浮自動浮起_mfh

connect( this, SIGNAL(clicked()), mapper(), SLOT(map()) ); //?
mapper()->setMapping( this, 0 );

Q3Frame* frame = new Q3Frame(this);
m_subLayout = new QGridLayout( frame );
m_subLayout->setSpacing(0);
m_subLayout->setMargin(0);

QToolButton* sub;
int num = sizeof(_rgbTbl)/sizeof(_rgbTbl[0]);
int i;

for( i=0; i<num; i++ )
{
sub = new QToolButton(frame);
sub->setMaximumSize( QSize(16,16) );
QToolTip::add( sub, QString::fromLocal8Bit(_rgbTbl[i].name) );
sub->setAutoRaise( true );
sub->setIconSet(QIcon( colorPixmap(QColor(_rgbTbl[i].value)) ));
m_subLayout->addWidget( sub, i/7, i%7 );
connect( sub, SIGNAL(clicked()), mapper(), SLOT(map()) );
mapper()->setMapping( sub, 1+i );
}

int rowadd = 0;
sub = new QToolButton(frame);
QSizePolicy sizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
sizePolicy.setHeightForWidth(sub->sizePolicy().hasHeightForWidth());
sub->setSizePolicy(sizePolicy);
m_subLayout->addMultiCellWidget( sub, num/7+rowadd, num/7+rowadd, 0, 6 );
sub->setAutoRaise( true );
sub->setText( tr("其它颜色...") );//pen_mfh

connect( sub, SIGNAL(clicked()), mapper(), SLOT(map()) ); //弹出其他颜色选择框
mapper()->setMapping( sub, num+2 );

frame->updateGeometry();
Q3PopupMenu *menu = new Q3PopupMenu(this);
menu->insertItem( frame );//frame不能转化为Qstring
setPopup(menu);
}
...全文
226 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
向立天 2015-07-30
  • 打赏
  • 举报
回复
您好 我是本版版主 此帖已多日无人关注 请您及时结帖 如您认为问题没有解决可按无满意结帖处理 另外本版设置了疑难问题汇总帖 并已在版面置顶 相关规定其帖子中有说明 您可以根据规定提交您帖子的链接 如您目前不想结帖只需回帖说明 我们会删除此结帖通知 见此回复三日内无回应 我们将强制结帖 相关规定详见界面界面版关于版主结帖工作的具体办法
yaozhiyong110 2015-06-30
  • 打赏
  • 举报
回复
我看了assistant 好像是不支持这样使用了 你还是把整个函数改成QMenu重新实现一遍吧...

15,976

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧