[sample] tableview + arrayContentProvide + default labelProvide + filter

本文介绍了如何在TableViewer中使用ArrayContentProvider和ViewerFilter来实现过滤特定元素的功能,通过实例展示了具体实现过程。

[sample] tableview + arrayContentProvide + default labelProvide + filter

public class TableViewer7 {

    public static void creatShellArae(Shell shell) {
        Table table = new Table(shell, SWT.BORDER | SWT.FULL_SELECTION);
        table.setHeaderVisible(true);
        for(int i=0; i < 3; i++) {
            TableColumn column = new TableColumn(table, SWT.NONE);
            column.setText("column " + i); column.setWidth(100);
        }

        TableViewer viewer = new TableViewer(table);
        viewer.setContentProvider(new ArrayContentProvider());
        viewer.setFilters(new ViewerFilter[] {
                new ViewerFilter() {
                    public boolean select(Viewer viewer, Object parentElement, Object element) {
                        if(element.equals("b"))
                            return false;
                        else
                            return true;
                    }
                }
        });

        String[] input = {"a","b","c"};
        viewer.setInput(input);
    }

    public static void main(String[] args) {
        Display display = Display.getDefault();
        Shell shell = new Shell(display);
        shell.setSize(500, 300);
        shell.setLayout(new FillLayout());

        creatShellArae(shell);

        shell.open();
        shell.layout();

        while (!shell.isDisposed())
            if (!display.readAndDispatch())
                display.sleep();

    }

}

 

<think> 我们注意到用户的问题中出现了“qtC++”,因此我们理解为在Qt框架下使用C++语言设置TableView(可能是QTableView)的表头宽度。 在Qt中,QTableView的表头分为水平表头(horizontal header)和垂直表头(vertical header)。设置宽度通常指的是设置水平表头的列宽。 可以通过以下方式设置: 1. 使用setColumnWidth(int column, int width)方法设置特定列的宽度。 2. 使用horizontalHeader()获取水平表头,然后设置其相关属性,例如设置默认段大小(setDefaultSectionSize)、设置拉伸模式(setSectionResizeMode)等。 示例代码: 假设我们有一个QTableView对象名为tableView,我们想要设置第一列的宽度为100像素,第二列为150像素,并且让最后一列自动填充剩余空间。 ```cpp // 设置第一列宽度为100 tableView->setColumnWidth(0, 100); // 设置第二列宽度为150 tableView->setColumnWidth(1, 150); // 设置水平表头的拉伸模式,使最后一列填充剩余空间 tableView->horizontalHeader()->setStretchLastSection(true); ``` 另外,还可以设置表头的拉伸模式,例如: - QHeaderView::Stretch:各列等分填充整个视图,但不会改变用户手动调整的列宽。 - QHeaderView::ResizeToContents:根据内容自动调整列宽。 - QHeaderView::Fixed:固定列宽,只能通过代码改变。 - QHeaderView::Interactive:用户可调整,也可通过代码调整(默认)。 例如,设置所有列自动根据内容调整宽度: ```cpp tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents); ``` 注意:设置表头宽度通常是在模型设置之后进行,因为列的数量需要确定。 另外,如果要设置垂直表头(行头)的宽度,可以使用verticalHeader(),然后设置宽度或行高(setDefaultSectionSize等)。但垂直表头通常设置的是行高,宽度则是垂直表头本身的宽度,可以通过setFixedWidth设置。 例如,设置垂直表头的宽度为50像素: ```cpp tableView->verticalHeader()->setFixedWidth(50); ``` 总结:设置表头宽度主要针对水平表头(列宽)和垂直表头(表头本身的宽度)。列宽可以通过setColumnWidth或设置水平表头的属性来实现。 §§相关问题§§ 1. 如何设置QTableView中所有列的默认宽度? 2. 如何让QTableView的列宽自动适应内容? 3. 如何设置垂直表头(行头)的宽度? 4. 如何设置水平表头的高度(即表头行高)? 5. 如何隐藏QTableView的表头(水平或垂直)? </think>在Qt C++中,为`QTableView`设置表头宽度主要涉及操作水平表头(`QHeaderView`)和垂直表头。以下是常用方法: ### 1. 设置水平表头(列)宽度 ```cpp // 获取水平表头 QHeaderView* horizontalHeader = tableView->horizontalHeader(); // 设置特定列宽度(第0列设为150px) horizontalHeader->resizeSection(0, 150); // 设置所有列默认宽度 horizontalHeader->setDefaultSectionSize(100); // 设置列宽自适应内容 horizontalHeader->setSectionResizeMode(QHeaderView::ResizeToContents); // 设置列可拉伸填充空间 horizontalHeader->setSectionResizeMode(QHeaderView::Stretch); ``` ### 2. 设置垂直表头(行)宽度 ```cpp // 获取垂直表头 QHeaderView* verticalHeader = tableView->verticalHeader(); // 设置行头宽度 verticalHeader->setFixedWidth(80); // 固定宽度 // 或通过样式表设置 tableView->verticalHeader()->setStyleSheet("width: 80px;"); ``` ### 3. 完整示例 ```cpp QTableView* tableView = new QTableView(this); QStandardItemModel* model = new QStandardItemModel(5, 3, this); tableView->setModel(model); // 设置水平表头 tableView->horizontalHeader()->setDefaultSectionSize(120); // 默认列宽 tableView->horizontalHeader()->resizeSection(0, 200); // 第0列特殊宽度 // 设置垂直表头 tableView->verticalHeader()->setFixedWidth(60); // 行头宽度 tableView->verticalHeader()->setDefaultSectionSize(40); // 行高 ``` ### 重要参数 - `setSectionResizeMode()` 可选模式: - `QHeaderView::Interactive` // 用户可调整 - `QHeaderView::Fixed` // 固定宽度 - `QHeaderView::Stretch` // 自动填充 - `QHeaderView::ResizeToContents` // 自适应内容
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值