Skip to content

Commit 1b29ece

Browse files
添加目录浏览功能
1 parent 27eb612 commit 1b29ece

File tree

6 files changed

+219
-26
lines changed

6 files changed

+219
-26
lines changed

qt_driview/main.cpp

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
/****************************************************************************
2+
**
3+
** Copyright (C) 2016 The Qt Company Ltd.
4+
** Contact: https://www.qt.io/licensing/
5+
**
6+
** This file is part of the examples of the Qt Toolkit.
7+
**
8+
** $QT_BEGIN_LICENSE:BSD$
9+
** Commercial License Usage
10+
** Licensees holding valid commercial Qt licenses may use this file in
11+
** accordance with the commercial license agreement provided with the
12+
** Software or, alternatively, in accordance with the terms contained in
13+
** a written agreement between you and The Qt Company. For licensing terms
14+
** and conditions see https://www.qt.io/terms-conditions. For further
15+
** information use the contact form at https://www.qt.io/contact-us.
16+
**
17+
** BSD License Usage
18+
** Alternatively, you may use this file under the terms of the BSD license
19+
** as follows:
20+
**
21+
** "Redistribution and use in source and binary forms, with or without
22+
** modification, are permitted provided that the following conditions are
23+
** met:
24+
** * Redistributions of source code must retain the above copyright
25+
** notice, this list of conditions and the following disclaimer.
26+
** * Redistributions in binary form must reproduce the above copyright
27+
** notice, this list of conditions and the following disclaimer in
28+
** the documentation and/or other materials provided with the
29+
** distribution.
30+
** * Neither the name of The Qt Company Ltd nor the names of its
31+
** contributors may be used to endorse or promote products derived
32+
** from this software without specific prior written permission.
33+
**
34+
**
35+
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
36+
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
37+
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
38+
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
39+
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
40+
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
41+
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
42+
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
43+
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
44+
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
45+
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
46+
**
47+
** $QT_END_LICENSE$
48+
**
49+
****************************************************************************/
50+
51+
#include <QApplication>
52+
#include <QDesktopWidget>
53+
#include <QFileSystemModel>
54+
#include <QFileIconProvider>
55+
#include <QTreeView>
56+
#include <QCommandLineParser>
57+
#include <QCommandLineOption>
58+
59+
int main(int argc, char *argv[])
60+
{
61+
QApplication app(argc, argv);
62+
63+
QCoreApplication::setApplicationVersion(QT_VERSION_STR);
64+
QCommandLineParser parser;
65+
parser.setApplicationDescription("Qt Dir View Example");
66+
parser.addHelpOption();
67+
parser.addVersionOption();
68+
QCommandLineOption dontUseCustomDirectoryIconsOption("c", "Set QFileIconProvider::DontUseCustomDirectoryIcons");
69+
parser.addOption(dontUseCustomDirectoryIconsOption);
70+
parser.addPositionalArgument("directory", "The directory to start in.");
71+
parser.process(app);
72+
const QString rootPath = parser.positionalArguments().isEmpty()
73+
? QString() : parser.positionalArguments().first();
74+
75+
QFileSystemModel model;
76+
model.setRootPath("");
77+
if (parser.isSet(dontUseCustomDirectoryIconsOption))
78+
model.iconProvider()->setOptions(QFileIconProvider::DontUseCustomDirectoryIcons);
79+
QTreeView tree;
80+
tree.setModel(&model);
81+
if (!rootPath.isEmpty()) {
82+
const QModelIndex rootIndex = model.index(QDir::cleanPath(rootPath));
83+
if (rootIndex.isValid())
84+
tree.setRootIndex(rootIndex);
85+
}
86+
87+
// Demonstrating look and feel features
88+
tree.setAnimated(false);
89+
tree.setIndentation(20);
90+
tree.setSortingEnabled(true);
91+
const QSize availableSize = QApplication::desktop()->availableGeometry(&tree).size();
92+
tree.resize(availableSize / 2);
93+
tree.setColumnWidth(0, tree.width() / 3);
94+
95+
tree.setWindowTitle(QObject::tr("Dir View"));
96+
tree.show();
97+
98+
return app.exec();
99+
}

qt_driview/mainwindow.cpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
#include "mainwindow.h"
2+
#include "ui_mainwindow.h"
3+
4+
MainWindow::MainWindow(QWidget *parent) :
5+
QMainWindow(parent),
6+
ui(new Ui::MainWindow)
7+
{
8+
ui->setupUi(this);
9+
}
10+
11+
MainWindow::~MainWindow()
12+
{
13+
delete ui;
14+
}

qt_driview/mainwindow.h

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#ifndef MAINWINDOW_H
2+
#define MAINWINDOW_H
3+
4+
#include <QMainWindow>
5+
6+
namespace Ui {
7+
class MainWindow;
8+
}
9+
10+
class MainWindow : public QMainWindow
11+
{
12+
Q_OBJECT
13+
14+
public:
15+
explicit MainWindow(QWidget *parent = nullptr);
16+
~MainWindow();
17+
18+
private:
19+
Ui::MainWindow *ui;
20+
};
21+
22+
#endif // MAINWINDOW_H

qt_driview/mainwindow.ui

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<ui version="4.0">
2+
<class>MainWindow</class>
3+
<widget class="QMainWindow" name="MainWindow" >
4+
<property name="geometry" >
5+
<rect>
6+
<x>0</x>
7+
<y>0</y>
8+
<width>400</width>
9+
<height>300</height>
10+
</rect>
11+
</property>
12+
<property name="windowTitle" >
13+
<string>MainWindow</string>
14+
</property>
15+
<widget class="QMenuBar" name="menuBar" />
16+
<widget class="QToolBar" name="mainToolBar" />
17+
<widget class="QWidget" name="centralWidget" />
18+
<widget class="QStatusBar" name="statusBar" />
19+
</widget>
20+
<layoutDefault spacing="6" margin="11" />
21+
<pixmapfunction></pixmapfunction>
22+
<resources/>
23+
<connections/>
24+
</ui>

qt_driview/qt_driview.pro

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
#-------------------------------------------------
2+
#
3+
# Project created by QtCreator 2023-09-27T14:08:10
4+
#
5+
#-------------------------------------------------
6+
7+
QT += core gui
8+
9+
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
10+
11+
TARGET = qt_driview
12+
TEMPLATE = app
13+
14+
# The following define makes your compiler emit warnings if you use
15+
# any feature of Qt which has been marked as deprecated (the exact warnings
16+
# depend on your compiler). Please consult the documentation of the
17+
# deprecated API in order to know how to port your code away from it.
18+
DEFINES += QT_DEPRECATED_WARNINGS
19+
20+
# You can also make your code fail to compile if you use deprecated APIs.
21+
# In order to do so, uncomment the following line.
22+
# You can also select to disable deprecated APIs only up to a certain version of Qt.
23+
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
24+
25+
CONFIG += c++11
26+
27+
SOURCES += \
28+
main.cpp \
29+
mainwindow.cpp
30+
31+
HEADERS += \
32+
mainwindow.h
33+
34+
FORMS += \
35+
mainwindow.ui
36+
37+
# Default rules for deployment.
38+
qnx: target.path = /tmp/$${TARGET}/bin
39+
else: unix:!android: target.path = /opt/$${TARGET}/bin
40+
!isEmpty(target.path): INSTALLS += target

qt_zk/mainwindow.cpp

Lines changed: 20 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -14,32 +14,26 @@ MainWindow::MainWindow(QWidget *parent) :
1414
ui->setupUi(this);
1515

1616

17-
QString strLibPath = ":/libs/zookeeper";
18-
19-
if (!QLibrary::isLibrary(strLibPath))
20-
{
21-
qDebug() << strLibPath << "!QLibrary::isLibrary";
22-
}
23-
24-
auto m_pLib = new QLibrary(strLibPath);
25-
bool libload =false;
26-
if(!m_pLib->load()) //dll加载
27-
{
28-
qDebug()<<"load failed";
29-
}else
30-
{
31-
qDebug()<<"load succ";
32-
libload =true;
33-
}
34-
35-
// if(!resolveFunction(m_myadd, "add"))
36-
// {
37-
// qDebug()<<"failed";
38-
// }else
39-
// {
40-
// int ret = m_myadd(5,8);
41-
// qDebug()<<"ret = "<<ret;
42-
// }
17+
// 创建按钮
18+
button1 = new QPushButton("切换到界面1", this);
19+
button2 = new QPushButton("切换到界面2", this);
20+
21+
// 创建堆叠窗口
22+
stackedWidget = new QStackedWidget(this);
23+
24+
// 将堆叠窗口和按钮添加到主窗口的布局中
25+
QVBoxLayout* layout = new QVBoxLayout();
26+
layout->addWidget(button1);
27+
layout->addWidget(button2);
28+
layout->addWidget(stackedWidget);
29+
30+
QWidget* centralWidget = new QWidget(this);
31+
centralWidget->setLayout(layout);
32+
setCentralWidget(centralWidget);
33+
34+
// 连接按钮的 clicked 信号到槽函数
35+
connect(button1, &QPushButton::clicked, this, &MyMainWindow::showPage1);
36+
connect(button2, &QPushButton::clicked, this, &MyMainWindow::showPage2);
4337

4438

4539
}

0 commit comments

Comments
 (0)