c++ - Qt QTableView 实现切换按钮和复选框委托(delegate)

标签 c++ qt model-view-controller

我目前正在尝试通过子类化 QTableViewQAbstractTableModelQStyledItemDelegate 来构建 Qt 表,以维持 MVC 架构的一些外观。

我使用这个简单的示例作为构建的基础,因为我之前没有接触过 Qt 表类:

http://qt-project.org/doc/qt-4.8/modelview.html

无论如何,表格主要是文本列,但它也需要一个切换按钮列和一个复选框列。

我注意到模型的数据方法可用于实现复选框,但我需要按钮的自定义委托(delegate),因此我也将其用于复选框。

无论如何,我无法在互联网上找到任何通过使用包含文本、复选框和按钮的混合的 QTableView 对象来创建表格的合适示例。你们中的任何一位好先生能给我指出正确的方向吗?

最佳答案

您不需要自定义委托(delegate)即可在表格 View 中添加复选框和切换按钮。您可以简单地使您的项目可检查并将其设置为您的模型,例如:

QStandardItem *item = new QStandardItem( true );
item->setCheckable(true);
item->setCheckState(Qt::Unchecked);

QStandardItemModel * model = new QStandardItemModel( 0, 2 );
model->setRowCount(1);
model->setItem(0, 0, item);

对于切换按钮,您可以这样做:

QPushButton * but = new QPushButton(this);
but->setCheckable(true);
but->setText("Toggle");

ui->tableView->setIndexWidget(model->item(0,1)->index(),but);

关于c++ - Qt QTableView 实现切换按钮和复选框委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22865201/

相关文章:

c++ - 使用 Ajax 请求从 QWebView 读取本地文件

c++ - 如何实现从 Windows 脚本宿主到脚本的事件调度

C++在删除时循环遍历 map

qt - QGraphicsView 的 PyQt 鼠标事件

c++ - 水平对齐动态创建的小部件 qt c++

c++ - 如何创建没有透明内容的完全透明窗口?

c++ - QTcpSocket 客户端自动重连

design-patterns - MVP是一种设计模式还是一种架构模式? MvC 和 MvvM 怎么样?

twitter-bootstrap - 使用带有 foreach 循环的 Bootstrap 模式

c# - FacebookApplication.VerifyAuthentication(_httpContext, GenerateLocalCallbackUri()) 在 Facebook 上返回 null