Qt 的第一次尝试
Qt 这个东西真挺好玩,难度和 .net 差不多。但是当你想偷懒的时候,又有完整c++灵活性可用。
今天下午工作早早昨晚,闲来无事,玩玩Qt,过几天项目就该过来了,还要抓紧学习……

#ifndef MYQT01_H
#define MYQT01_H
#include <QtGui/QWidget>
#include <QDirModel>
#include <QTreeView>
#include <QListView>
#include <QSplitter>
#include <QHBoxLayout>
#include <QModelIndex>
class myqt01: public QWidget
{
Q_OBJECT
public:
myqt01(QWidget *parent = 0);
~myqt01();
private slots:
void tree_clicked(const QModelIndex & index) const;
void list_doubleClicked(const QModelIndex & index) const;
private:
void openDir(const QString *path) const;
private:
QDirModel *treeModel;
QDirModel *listModel;
QTreeView *tree;
QListView *list;
QSplitter *splitter;
QHBoxLayout *layout;
};
#endif // MYQT01_H
#include <QDirModel>
#include <QTreeView>
#include <QListView>
#include <QSplitter>
#include <QHBoxLayout>
#include <QModelIndex>
#include <QList>
#include "myqt01.h"
myqt01::myqt01(QWidget *parent) :
QWidget(parent)
{
// treeModel
treeModel = new QDirModel;
treeModel->setFilter(QDir::Dirs | QDir::Drives | QDir::NoDotAndDotDot);
// tree
tree = new QTreeView;
tree->setModel(treeModel);
tree->setRootIndex(treeModel->index("/"));
tree->setHeaderHidden(true);
for (int i = 1; i < treeModel->columnCount(); i++)
tree->setColumnHidden(i, true);
connect(tree, SIGNAL(clicked(const QModelIndex &)), this,
SLOT(tree_clicked(const QModelIndex &)));
// listModel
listModel = new QDirModel;
listModel->sort(0);
// list
list = new QListView;
list->setModel(listModel);
connect(list, SIGNAL(doubleClicked(const QModelIndex &)), this,
SLOT(list_doubleClicked(const QModelIndex &)));
openDir(&QDir::currentPath());
// splitter
QSplitter *splitter = new QSplitter(this);
splitter->addWidget(tree);
splitter->addWidget(list);
QList<int> sizes = splitter->sizes();
sizes[0] = 100;
sizes[1] = 200;
splitter->setSizes(sizes);
// layout
layout = new QHBoxLayout;
layout->addWidget(splitter);
this->setLayout(layout);
}
myqt01::~myqt01()
{
}
void myqt01::tree_clicked(const QModelIndex & index) const
{
QString path = treeModel->filePath(index);
openDir(&path);
}
void myqt01::list_doubleClicked(const QModelIndex & index) const
{
if (!listModel->isDir(index))
return;
QString path = listModel->filePath(index);
openDir(&path);
}
void myqt01::openDir(const QString *path) const
{
tree->setCurrentIndex(treeModel->index(*path));
list->setRootIndex(listModel->index(*path));
}
#include "myqt01.h"
#include <QtGui>
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
myqt01 w;
w.show();
return a.exec();
}
浙公网安备 33010602011771号