【问题标题】:Qt5 | Function w/ Slot Not WorkingQt5 |带插槽的功能不起作用
【发布时间】:2017-02-16 13:52:11
【问题描述】:

我制作了一个有两种形式的应用。

当我在第二个表单中按下保存按钮时,它会更新数据库记录,然后返回到第一个表单。我已经通过 Signal-Slot 使用以下代码连接了这两种形式:

DruckerData.h

signals:
void btnSavePressed(QString printerName);

DruckerData.cpp

UiMainWindow frmMain;
connect(this,SIGNAL(btnSavePressed(QString)),&frmMain,SLOT(refreshSaved( QString )));
emit btnSavePressed(ui->ledit_druckerName->text());
this->hide();

UiMainWindow.h

public slots:
void refreshSaved(QString printerName);

UiMainWindow.cpp

void UiMainWindow::refreshSaved(QString printerName){
    qDebug()<<"Updated: "<<printerName;

    show_list(); //<<<<<<<<<<<<<<<<<<<<<< this function
}

显示列表

void UiMainWindow::show_list (){

    QList<DB_Printers_lvs> list;
    DB_Printers_lvsTransporter t("LVS");
    QString        wc;

    this->setCursor(Qt::WaitCursor);

    wc = QString("where 1=1 order by nam_printer");
    if (!t.load_dbPrinters_lvs_wc(&list,wc))
    {
        log()<< "get printers failed"<< wc << t.getLastError();
        this->setCursor(Qt::ArrowCursor);
        return;
    }


    ui.treeWidget->clear();

    foreach (DB_Printers_lvs db, list)
    {
        QTreeWidgetItem *item = new QTreeWidgetItem(0);

        printer_to_qtreewidgetitem(item, db);

        ui.treeWidget->insertTopLevelItem(ui.treeWidget->topLevelItemCount(), item);
    }

    ui.treeWidget->header()->resizeSections(QHeaderView::ResizeToContents);
    ui.bow_search->apply();
    this->setCursor(Qt::ArrowCursor);
}

当我按下第二个表单上的按钮并显示第一个表单时,我看到使用打印机名称进行调试写入 Updated,但问题是如何调用或启动此功能 show_list()

感谢您的帮助。

【问题讨论】:

  • 我们可以看看show_list();
  • 我已经编辑了我的帖子并添加了 show_list
  • show_list()的开头放置一个qDebug测试然后运行。

标签: qt signals slots


【解决方案1】:

您在这里创建UiMainWindow 的第二个实例的问题:

UiMainWindow frmMain;

然后你将信号与第二个实例连接起来,称之为槽,但你甚至不显示 MainForm 的第二个实例。而不是这个,您应该在创建DruckerData 表单之后在UiMainWindow 内连接信号和插槽。不幸的是,您的问题没有此代码,因此我无法准确显示位置。这应该是这样的:

//Inside UiMainWindow
DruckerData *data = new DruckerData(this);
connect(data, SIGNAL(btnSavePressed(QString)),this,SLOT(refreshSaved( QString )));
data->show();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-13
    • 1970-01-01
    • 1970-01-01
    • 2022-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多