首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用QSignalMapper时更新映射

使用QSignalMapper时更新映射
EN

Stack Overflow用户
提问于 2017-08-24 17:40:31
回答 1查看 350关注 0票数 0

我已经在tableview的最后一列中创建了一个QPushButton (它包含连接到我的应用程序的客户端的ip地址)。通过该按钮,我可以使用按钮释放信号和插槽“handlebutton(Int)”来断开该特定行中已连接的客户端的连接。

密码是-

代码语言:javascript
复制
MainWindow::MainWindow(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QSortFilterProxyModel *model = new QSortFilterProxyModel(this);
    model = pCApp->guiClient()->getConnectionManagement()->getProxyModel();
    ui->tableView->setModel(model);
    QPushButton *button;
    QSignalMapper *mapper = new QSignalMapper(this);
    QObject::connect(mapper, SIGNAL (mapped(int)), this, SLOT (handleButton(int)));
    for (int i = 0; i < model->rowCount(); i++)
    {
        button = new QPushButton;
        button->setText("Disconnect " + QString::number(i));
        button->setStyleSheet("QPushButton { color: #E5E5E5; }");
        ui->tableView->setIndexWidget(model->index(i,2, QModelIndex()), button);
        QObject::connect(button, SIGNAL(released()), mapper, SLOT(map()));
        mapper->setMapping(button, i);
    }
    setAttribute(Qt::WA_DeleteOnClose);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::handleButton(int row)
{
    CGuiClientMessage message;
    message.setRecipient(CGuiMessage::R_GUISERVER);
    message.setObjectId(0);
    message.setCommand(CGuiMessage::DISCONNECT_PEER);
    message.Parameter().setAttribute("Peers", ui->tableView->model()->data(ui->tableView->model()->index(row,1)).toString());
    pCApp->guiClient()->SendMessageToPts(message);
}

现在,我想要更新映射。我应该在哪里做,在槽里还是在其他地方?有没有人能建议我怎么做,在哪里做?

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-24 18:21:10

如果我没弄错的话,您只需要在按钮被单击且相应的客户端断开连接后立即取消映射。然后,您只需在相应的按钮上调用mapper->removeMapping(button)。如果您需要再次映射此按钮-请再次调用mapper->setMapping(button, i)

请记住,它不会从映射器断开按钮released信号。如果需要,请明确使用QObject::disconnect

此外,如果您的按钮被销毁- removeMappingdisconnect都为您做了,所以您不必担心这一点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45858152

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档