我有一个由4行4列组成的tableView。在最后一栏中,每个单元都有一个按钮。我试图点击每列的按钮打开另一个.ui表单。所以对于4按钮,我需要打开4个相同的.ui形式。具体来说,我将打开一个表进行编辑。如何点击QPush按钮打开.ui表格? 以下是 buttoncolumndelegate.h
#include "buttoncolumndelegate.h"
ButtonColumnDelegate::ButtonColumnDelegate(QObject *parent) :
QItemDelegate(parent)
{
}
void ButtonColumnDelegate::paint(QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index) const
{
QPushButton detail(index.data().toString());
detail.setGeometry(option.rect);
detail.setText("Detail");
painter->save();
painter->translate(option.rect.topLeft());
detail.render(painter);
painter->restore();
}
void ButtonColumnDelegate::setEditorData(QWidget *editor,
const QModelIndex &index) const
{
QPushButton *detail = qobject_cast<QPushButton *>(editor);
detail->setProperty("Detail", "Detail");
detail->setText("Detail");
(void) index;
}
void ButtonColumnDelegate::setModelData(QWidget *editor, QAbstractItemModel *model,
const QModelIndex &index) const
{
QPushButton *detail = qobject_cast<QPushButton *>(editor);
detail->setGeometry(20,20,20,20);
model->setData(index, detail->property("Detail"));
}
void ButtonColumnDelegate::updateEditorGeometry(QWidget *editor,
const QStyleOptionViewItem &option,
const QModelIndex &index) const
{
editor->setGeometry(option.rect);
(void) index;
}
这是dialog.cpp
#include "dialog.h"
#include "ui_dialog.h"
#include "buttoncolumndelegate.h"
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
mybutton = new ButtonColumnDelegate(this);
mModel = new QStandardItemModel(4,4,this);
ui->tableView->setModel(mModel);
ui->tableView->setItemDelegateForColumn(3, mybutton);
}
Dialog::~Dialog()
{
delete ui;
}
单击按钮并打开.ui(表格)后,如何创建可点击连接的任何线索都会很棒。
答案 0 :(得分:0)
你做错了。代理中的编辑器模式 - 用于句柄编辑。你应该通过委托手动绘制一个按钮和hadle cmouse事件。
或者您可以在视图上使用setIndexWidget
来创建按钮。