首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

QCombox 上拉列表能实现 Tree 状结构吗

2012-12-21 
QCombox 下拉列表能实现 Tree 状结构吗?QCombox 下拉列表能实现 Tree 状结构吗?[最优解释]应该是#include

QCombox 下拉列表能实现 Tree 状结构吗?
QCombox 下拉列表能实现 Tree 状结构吗?
[最优解释]


应该是

#include <QTreeView>
而不是QTreeWidget.

下面给你一个使用MVC的代码参考下:

#include <QApplication>
#include <QFileSystemModel>
#include <QTreeView>
#include <QListView>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    // 创建文件系统模型
    QFileSystemModel model;
    // 指定要监视的目录
    model.setRootPath(QDir::currentPath());

    // 创建树型视图
    QTreeView tree;
    // 为视图指定模型
    tree.setModel(&model);
    // 指定根索引
    tree.setRootIndex(model.index(QDir::currentPath()));

    // 创建列表视图
    QListView list;
    list.setModel(&model);
    list.setRootIndex(model.index(QDir::currentPath()));

    tree.show();
    list.show();

    return app.exec();
}

[其他解释]
应该可以的,有个方法叫做:setModel ( QAbstractItemModel * ),可以用界面MVC来实现.结合:
QTreeView, QAbstractListModel.
[其他解释]
sorry,上面那个方法写错了,应该是:QComboBox::setView ( QAbstractItemView * itemView ),这个应该不难了吧,很简单就可以实现了.
引用:
应该可以的,有个方法叫做:setModel ( QAbstractItemModel * ),可以用界面MVC来实现.结合:
QTreeView, QAbstractListModel.

[其他解释]
引用:
sorry,上面那个方法写错了,应该是:QComboBox::setView ( QAbstractItemView * itemView ),这个应该不难了吧,很简单就可以实现了.
引用:应该可以的,有个方法叫做:setModel ( QAbstractItemModel * ),可以用界面MVC来实现.结合:
QTreeView,……


好象不行哎,直接崩溃了:

    QTreeWidget* View = new QTreeWidget(ui->comboBox);
    ui->comboBox->setView(View);

Qt 也没自带个example的 ...

[其他解释]
我大概试了下,看来是可行的,不过是需要细化下,你看下效果:

代码如下:

#include <QtGui/QApplication>
#include <QTreeView>
#include <QFileSystemModel>
#include <QComboBox>
#include <QDir>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    // 创建文件系统模型
    QFileSystemModel *model = new QFileSystemModel();
    // 指定要监视的目录
    model->setRootPath(QDir::currentPath());
    QTreeView *tree = new QTreeView();
    tree->setModel(model);
    tree->setRootIndex(model->index(QDir::currentPath()));
    QComboBox *b = new QComboBox();
    b->resize(400, 20);


    b->setView(tree);
    b->setModel(model);
    b->show();


    return a.exec();
}


[其他解释]
Note: If you want to use the convenience views (like QListWidget, QTableWidget or QTreeWidget), make sure to call setModel() on the combobox with the convenience widgets model before calling this function.
[其他解释]
引用:
我大概试了下,看来是可行的,不过是需要细化下,你看下效果:

代码如下:
C/C++ code?123456789101112131415161718192021222324252627#include <QtGui/QApplication>#include <QTreeView>#include <QFileSystemModel>#include <QComb……


看到你回贴前已经试出来了,QTreeWidget 也是可以的,只是少了一句:

    QTreeWidget* View = new QTreeWidget(ui->comboBox);
    ui->comboBox->setModel(View.model()); // 前面加上这句就OK了。
    ui->comboBox->setView(View);


非常感谢。

热点排行