• 9560阅读
  • 4回复

QTableWidget中修改数据如何发出SIGNAL [复制链接]

上一主题 下一主题
离线clarkyeah
 

只看楼主 倒序阅读 楼主  发表于: 2011-08-20
我修改了一下QT官网上的Chart的例子,在MainWindow.CPP中加入(粗体标出):
MainWindow::MainWindow()
{
    QMenu *fileMenu = new QMenu(tr("&File"), this);
    QAction *openAction = fileMenu->addAction(tr("&Open..."));
    openAction->setShortcuts(QKeySequence::Open);
    QAction *saveAction = fileMenu->addAction(tr("&Save As..."));
    saveAction->setShortcuts(QKeySequence::SaveAs);
    QAction *quitAction = fileMenu->addAction(tr("E&xit"));
    quitAction->setShortcuts(QKeySequence::Quit);

    setupModel();
    setupViews();

    connect(openAction, SIGNAL(triggered()), this, SLOT(openFile()));
    connect(saveAction, SIGNAL(triggered()), this, SLOT(saveFile()));
    connect(quitAction, SIGNAL(triggered()), qApp, SLOT(quit()));
   connect (model,SIGNAL(dataChanged(const QModelIndex & topLeft, const QModelIndex & bottomRight)),this,SLOT(display(const QModelIndex & topLeft, const QModelIndex & bottomRight)));
    menuBar()->addMenu(fileMenu);
    statusBar();

    openFile(":/Charts/qtdata.cht");

    setWindowTitle(tr("Chart"));
    resize(870, 550);
}

我是想程序执行的时候如果修改了Table中的数据,则能够触发
void  display(const QModelIndex & topLeft, const QModelIndex & bottomRight);
这个我写的函数,但是发现程序执行的时候,无论我在表中怎么修改,都不会执行display(),请问这是为什么呢?

期盼有高手帮我解答下这个问题。谢谢!



离线wxj120bw

只看该作者 1楼 发表于: 2011-08-20
回 楼主(clarkyeah) 的帖子
你打印下那个connect函数的返回结果
离线clarkyeah

只看该作者 2楼 发表于: 2011-08-20
返回false,晕,这是怎么回事,连不上?
离线clarkyeah

只看该作者 3楼 发表于: 2011-08-21
知道了,应该是

connect(model, SIGNAL(dataChanged ( const QModelIndex &, const QModelIndex &  )),
             this, SLOT( backgroundChanged ( const QModelIndex & , const QModelIndex &  )));

connect里面的函数不能写出形参名字
离线wxj120bw

只看该作者 4楼 发表于: 2011-08-23
回 3楼(clarkyeah) 的帖子
你理解很正确
快速回复
限100 字节
 
上一个 下一个