• 5225阅读
  • 2回复

关于slot里的QMessageBox的疑惑!往高手支招! [复制链接]

上一主题 下一主题
离线penguinfish
 

只看楼主 倒序阅读 楼主  发表于: 2006-12-18
代码情况:
1.   界面上有一个listview控件。相关代码如下:
SMS::SMS(QWidget *parent) : QDialog(parent)
{
  ...(其他代码)
  TimeDelegate *timedelegate = new TimeDelegate(this);
  QObject::connect(timedelegate, SIGNAL(EditEnd()), this, SLOT(TimeEditFinished()));
  ...(其他代码)
}
void SMS::TimeEditFinished()
{
  …(其他代码)
  QMessageBox::warning(0, tr("Alert"), tr("Time is invalid!"), tr("OK"));
  …(其他代码)
}
2.   为了实现listview的item显示的是时间,建立TimeDelegate类,从而实现listview的item为QtimeEdit。TimeDelegate中相关代码如下:
QWidget *TimeDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &, const QModelIndex &) const
{
    QTimeEdit *editor = new QTimeEdit(parent);
  QTime minTime(0,0);
  editor->setMinimumTime(minTime);
  editor->setDisplayFormat("hh:mm:ss");
    editor->installEventFilter(const_cast<TimeDelegate*>(this));
    QObject::connect(editor, SIGNAL(editingFinished()), this, SLOT(emitEditEnd()));
    return editor;
}
void TimeDelegate::emitEditEnd()
{
  emit EditEnd();
}



遇到问题:
  void Manage::TimeEditFinished()中如果没有QmessageBox函数,则工作正常。如果存在QmessageBox函数,则会出现异常。(估计是在要得到某个已经不存在的构件的style()时出的异常,但是不知道为什么,实在找不到根源!)

  百思不得其解,往高手解答!

注:
  此问题一直没有解决,往管理员能帮忙想想。
  此次补充了函数createEditor中上次未上传的代码和调用堆栈的信息(见附件),怀疑问题的出现跟installEventFilter可能相关,但不能确定。(2007.01.19)
[ 此贴被penguinfish在2007-01-19 17:31重新编辑 ]
离线xsw7910
只看该作者 1楼 发表于: 2006-12-30
把“0”换成“this”试试
QMessageBox::warning(this, tr("Alert"), tr("Time is invalid!"), tr("OK"));
离线penguinfish

只看该作者 2楼 发表于: 2007-01-05
应该不是你说的问题,warning的参数设置为:0和this我都试过,不解决问题!
快速回复
限100 字节
 
上一个 下一个