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

stevenltx 发布于 2016/08/24 16:43
阅读 674
收藏 0
Qt
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(const QModelIndex &)));

connect(ui.pushButton, SIGNAL(clicked(bool)), this, SLOT(slotRowDoubleClicked(const QModelIndex &)));

        //下面这行代码可以执行,执行结果关闭当前窗口
    //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();
}
加载中
0
s
stevenltx
明白了
定义槽是不能加作用域的,改成下面的代码就ok了
public slots:
void slotRowDoubleClicked(const QModelIndex &);
返回顶部
顶部