• 4048阅读
  • 1回复

[提问]QTableView可以接受到鼠标双击信号,但是不能执行我的槽函数,请高手指点 [复制链接]

上一主题 下一主题
离线stevenltx
 

只看楼主 正序阅读 楼主  发表于: 2016-08-24
test06.h
#ifndef TEST06_H
#define TEST06_H

#include <QtWidgets/QMainWindow>
#include "ui_test06.h"
class test06 : public QMainWindow
{
    Q_OBJECT
public:
    test06(QWidget *parent = 0);
    ~test06();
private:
    Ui::test06Class ui;
private:
    void test06::iniTableView();
public slots:
    void test06::slotRowDoubleClicked(const QModelIndex &);
};
#endif // TEST06_H


test06.cpp

#include "test06.h"
#include <QtGui/QStandardItemModel>
test06::test06(QWidget *parent)
    : QMainWindow(parent)
{
    ui.setupUi(this);

    //初期化tableView
    iniTableView();

        //请问slotRowDoubleClicked为什么不能被执行
    connect(ui.tableView, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(slotRowDoubleClicked()));
    connect(ui.pushButton, SIGNAL(clicked(bool)), this, SLOT(slotRowDoubleClicked()));
        //下面这行代码可以执行,执行结果关闭当前窗口
    //connect(ui.tableView, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(close()));
}
void test06::slotRowDoubleClicked(const QModelIndex &)
{
    qDebug("test");
}

void test06::iniTableView()
{
    QStandardItemModel *model = new QStandardItemModel();
    ui.tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);
    ui.tableView->setSelectionBehavior(QAbstractItemView::SelectRows);
    ui.tableView->setSelectionMode(QAbstractItemView::SingleSelection);
    ui.tableView->setModel(model);
    QStringList headerList;
    headerList << u8"    客户    " << u8"     总资产     " << u8"盈亏比";
    model->setHorizontalHeaderLabels(headerList);
    ui.tableView->verticalHeader()->setVisible(true);
    ui.tableView->horizontalHeader()->setStretchLastSection(true);
    model->setRowCount(15);
    for (int row = 0; row < 15; row++) {
        for (int column = 0; column < 3; column++) {
            QModelIndex index = model->index(row, column, QModelIndex());
            if (column == 0) {
                model->setData(index, QVariant(QString(u8"客户%1").arg(column + 1)));
            }
            else if (column == 1) {
                model->setData(index, QVariant(1000000));
            }
            else {
                model->setData(index, QVariant("10%"));
            }

        }
    }
    ui.tableView->resizeColumnsToContents();
    ui.tableView->resizeRowsToContents();
}


离线stevenltx

只看该作者 1楼 发表于: 2016-08-24
明白了
定义槽是不能加作用域的,改成下面的代码就ok了
public slots:
    void slotRowDoubleClicked(const QModelIndex &);
快速回复
限100 字节
 
上一个 下一个