【问题标题】:Why didn't the dialog in the class execute?为什么类中的对话框没有执行?
【发布时间】:2011-09-30 12:49:37
【问题描述】:
Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
    ui->setupUi(this);
    connect(ui->addButton , SIGNAL(clicked()) , this , SLOT(addItem()));
    connect(ui->editButton , SIGNAL(clicked()) , this , SLOT(editItem()));
    connect(ui->deleteButton , SIGNAL(clicked()) , this , SLOT(deleteItem()));
}

void Dialog::addItem()
{
    EditDialog dlg(this);
    dlg.show();

    if(dlg.exec() == EditDialog::Accepted)
    {
        ui->list->addItem(dlg.name() + "--" + dlg.number());
    }
}

那是一个添加项目的类Dialog。 当我运行程序并单击按钮执行对话框时,它不执行任何操作,那么解决方案是什么?

【问题讨论】:

  • 你的标题应该是你的问题的简短陈述,而不是你希望看到它得到回答的愿望。
  • @chaos legion:点击“编辑”链接并在标题字段中输入。
  • 您是否尝试过只调用exec() 而不是show()
  • 您是否将addItem 声明为插槽,您是否在Dialog 类中使用了Q_OBJECT 宏?
  • 是的,我将 additem 声明为插槽,并在标题中使用 Q_OBJECT

标签: qt qt4.7


【解决方案1】:

你需要使用 QDialog::Accepted

如果您查看the docs 中的QDialog::exec,您会看到它从QDialog::DialogCode 枚举中返回一个值——其值为QDialog::AcceptedQDialog::Rejected

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多