Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在QTableWidget中获取单元格详细信息_Qt - Fatal编程技术网

在QTableWidget中获取单元格详细信息

在QTableWidget中获取单元格详细信息,qt,Qt,我的应用程序中有一个QTableWidget。我在运行时将QPushButton小部件添加到表小部件的单元格中。现在,单击这个新添加的按钮时,我需要执行一些操作。我需要获取包含此按钮的单元格的行和列详细信息。我怎样才能得到这些细节?我是Qt新手,正在寻求帮助 谢谢,, Rakesh.一种方法是利用Qt的属性系统,在插入按钮时向按钮添加动态行和列属性。这里有一个例子 # table_button_11361328.pro QT += core gui TARGET = table_bu

我的应用程序中有一个QTableWidget。我在运行时将QPushButton小部件添加到表小部件的单元格中。现在,单击这个新添加的按钮时,我需要执行一些操作。我需要获取包含此按钮的单元格的行和列详细信息。我怎样才能得到这些细节?我是Qt新手,正在寻求帮助

谢谢,,
Rakesh.

一种方法是利用Qt的属性系统,在插入按钮时向按钮添加动态行和列属性。这里有一个例子

# table_button_11361328.pro
QT       += core gui
TARGET = table_button_11361328
TEMPLATE = app
SOURCES += main.cpp

//main.cpp
#包括
#包括
#包括
#包括
类显示:公共QLabel
{
Q_对象
公众:
显示(QWidget*parent=0):QLabel(parent){}
公众时段:
void指示(){
QWidget*w=qobject_cast(sender());
如果(w==0)返回;
int row=w->property(“tableRow”).toInt();
int column=w->property(“tableColumn”).toInt();
setText(QString(“*%1,%2*”).arg(行).arg(列));
}
};
QWidget*setWidget(QTableWidget*表,int行,int列,QWidget*w)
{
w->setProperty(“表格行”,行);
w->setProperty(“tableColumn”,列);
table->setCellWidget(行、列、w);
返回w;
}
int main(int argc,char*argv[])
{
质量保证申请a(argc、argv);
QTableWidget表;
Display*d=新显示器();
表2.setRowCount(3);
表3.setColumnCount(2);
表.setCellWidget(2,0,d);
d->connect(setWidget(&table,0,0,new-QPushButton(“0,0”)),信号(clicked()),插槽(indicate());
d->connect(setWidget(&table,0,1,新的QPushButton(“0,1”)),信号(clicked()),插槽(indicate());
d->connect(setWidget(&table,1,0,新的QPushButton(“1,0”)),信号(clicked()),插槽(indicate());
d->connect(setWidget(&table,1,1,新的QPushButton(“1,1”)),信号(clicked()),插槽(indicate());
table.show();
返回a.exec();
}
#包括“main.moc”

注意,如果表格已排序,则此操作将失败。@Constantin它表示与模型索引关联的数字,而不是与视图索引关联的数字。将某些东西绑定到视图是另一个问题。我的观点仍然站得住脚——对于为您管理模型的QTableWidget来说,模型位置是不必要的信息。这不是对您的进程的攻击,我喜欢,这只是对使用已排序的QtableWidget执行此路线的人的一个提示。可能是重复的
// main.cpp
#include <QApplication>
#include <QTableWidget>
#include <QPushButton>
#include <QLabel>

class Display : public QLabel
{
    Q_OBJECT
public:
    Display(QWidget* parent = 0) : QLabel(parent) {}
public slots:
    void indicate() {
        QWidget * w = qobject_cast<QWidget*>(sender());
        if (w == 0) return;
        int row = w->property("tableRow").toInt();
        int column = w->property("tableColumn").toInt();
        setText(QString("* %1,%2 *").arg(row).arg(column));
    }
};

QWidget * setWidget(QTableWidget* table, int row, int column, QWidget * w)
{
    w->setProperty("tableRow", row);
    w->setProperty("tableColumn", column);
    table->setCellWidget(row, column, w);
    return w;
}

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QTableWidget table;
    Display * d = new Display();
    table.setRowCount(3);
    table.setColumnCount(2);
    table.setCellWidget(2, 0, d);
    d->connect(setWidget(&table, 0, 0, new QPushButton("0,0")), SIGNAL(clicked()), SLOT(indicate()));
    d->connect(setWidget(&table, 0, 1, new QPushButton("0,1")), SIGNAL(clicked()), SLOT(indicate()));
    d->connect(setWidget(&table, 1, 0, new QPushButton("1,0")), SIGNAL(clicked()), SLOT(indicate()));
    d->connect(setWidget(&table, 1, 1, new QPushButton("1,1")), SIGNAL(clicked()), SLOT(indicate()));
    table.show();
    return a.exec();
}

#include "main.moc"