📄 plugindialog.cpp
字号:
/******************************************************************************** Copyright (C) 2005-2006 Trolltech ASA. All rights reserved.**** This file is part of the example classes of the Qt Toolkit.**** This file may be used under the terms of the GNU General Public** License version 2.0 as published by the Free Software Foundation** and appearing in the file LICENSE.GPL included in the packaging of** this file. Please review the following information to ensure GNU** General Public Licensing requirements will be met:** http://www.trolltech.com/products/qt/opensource.html**** If you are unsure which license is appropriate for your use, please** review the following information:** http://www.trolltech.com/products/qt/licensing.html or contact the** sales department at sales@trolltech.com.**** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.******************************************************************************/#include <QtGui>#include "interfaces.h"#include "plugindialog.h"PluginDialog::PluginDialog(const QString &path, const QStringList &fileNames, QWidget *parent) : QDialog(parent){ label = new QLabel; label->setWordWrap(true); QStringList headerLabels; headerLabels << tr("Components"); treeWidget = new QTreeWidget; treeWidget->setAlternatingRowColors(false); treeWidget->setSelectionMode(QAbstractItemView::NoSelection); treeWidget->setHeaderLabels(headerLabels); treeWidget->header()->hide(); okButton = new QPushButton(tr("OK")); okButton->setDefault(true); connect(okButton, SIGNAL(clicked()), this, SLOT(close())); QGridLayout *mainLayout = new QGridLayout; mainLayout->setColumnStretch(0, 1); mainLayout->setColumnStretch(2, 1); mainLayout->addWidget(label, 0, 0, 1, 3); mainLayout->addWidget(treeWidget, 1, 0, 1, 3); mainLayout->addWidget(okButton, 2, 1); setLayout(mainLayout); interfaceIcon.addPixmap(style()->standardPixmap(QStyle::SP_DirOpenIcon), QIcon::Normal, QIcon::On); interfaceIcon.addPixmap(style()->standardPixmap(QStyle::SP_DirClosedIcon), QIcon::Normal, QIcon::Off); featureIcon.addPixmap(style()->standardPixmap(QStyle::SP_FileIcon)); setWindowTitle(tr("Plugin Information")); populateTreeWidget(path, fileNames);}void PluginDialog::populateTreeWidget(const QString &path, const QStringList &fileNames){ if (fileNames.isEmpty()) { label->setText(tr("Plug & Paint couldn't find any plugins in the %1 " "directory.") .arg(QDir::convertSeparators(path))); treeWidget->hide(); } else { label->setText(tr("Plug & Paint found the following plugins in the %1 " "directory:") .arg(QDir::convertSeparators(path))); QDir dir(path); foreach (QString fileName, fileNames) { QPluginLoader loader(dir.absoluteFilePath(fileName)); QObject *plugin = loader.instance(); QTreeWidgetItem *pluginItem = new QTreeWidgetItem(treeWidget); pluginItem->setText(0, fileName); treeWidget->setItemExpanded(pluginItem, true); QFont boldFont = pluginItem->font(0); boldFont.setBold(true); pluginItem->setFont(0, boldFont); if (plugin) { BrushInterface *iBrush = qobject_cast<BrushInterface *>(plugin); if (iBrush) addItems(pluginItem, "BrushInterface", iBrush->brushes()); ShapeInterface *iShape = qobject_cast<ShapeInterface *>(plugin); if (iShape) addItems(pluginItem, "ShapeInterface", iShape->shapes()); FilterInterface *iFilter = qobject_cast<FilterInterface *>(plugin); if (iFilter) addItems(pluginItem, "FilterInterface", iFilter->filters()); } } }}void PluginDialog::addItems(QTreeWidgetItem *pluginItem, const char *interfaceName, const QStringList &features){ QTreeWidgetItem *interfaceItem = new QTreeWidgetItem(pluginItem); interfaceItem->setText(0, interfaceName); interfaceItem->setIcon(0, interfaceIcon); foreach (QString feature, features) { if (feature.endsWith("...")) feature.chop(3); QTreeWidgetItem *featureItem = new QTreeWidgetItem(interfaceItem); featureItem->setText(0, feature); featureItem->setIcon(0, featureIcon); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -