本文整理汇总了C++中QAction::dynamicPropertyNames方法的典型用法代码示例。如果您正苦于以下问题:C++ QAction::dynamicPropertyNames方法的具体用法?C++ QAction::dynamicPropertyNames怎么用?C++ QAction::dynamicPropertyNames使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QAction
的用法示例。
在下文中一共展示了QAction::dynamicPropertyNames方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: slotOpenExample
void GettingStartedWelcomePageWidget::slotOpenExample()
{
QAction *action = qobject_cast<QAction*>(sender());
if (!action)
return;
QString helpFile = action->property(HelpPathPropertyName).toString();
QString proFile = action->property(ExamplePathPropertyName).toString();
QString qmlMainFileName;
bool isQmlProject = false;
if (action->dynamicPropertyNames().contains(QmlMainFileName)) {
qmlMainFileName = action->property(QmlMainFileName).toString();
isQmlProject = true;
}
QStringList files;
QFileInfo proFileInfo(proFile);
// If the Qt is a distro Qt on Linux, it will not be writable, hence compilation will fail
if (!proFileInfo.isWritable())
{
QDialog d;
QGridLayout *lay = new QGridLayout(&d);
QLabel *descrLbl = new QLabel;
d.setWindowTitle(tr("Copy Project to writable Location?"));
descrLbl->setTextFormat(Qt::RichText);
descrLbl->setWordWrap(true);
descrLbl->setText(tr("<p>The project you are about to open is located in the "
"write-protected location:</p><blockquote>%1</blockquote>"
"<p>Please select a writable location below and click \"Copy Project and Open\" "
"to open a modifiable copy of the project or click \"Keep Project and Open\" "
"to open the project in location.</p><p><b>Note:</b> You will not "
"be able to alter or compile your project in the current location.</p>")
.arg(QDir::toNativeSeparators(proFileInfo.dir().absolutePath())));
lay->addWidget(descrLbl, 0, 0, 1, 2);
QLabel *txt = new QLabel(tr("&Location:"));
Utils::PathChooser *chooser = new Utils::PathChooser;
txt->setBuddy(chooser);
chooser->setExpectedKind(Utils::PathChooser::ExistingDirectory);
QSettings *settings = Core::ICore::instance()->settings();
chooser->setPath(settings->value(
QString::fromLatin1("General/ProjectsFallbackRoot"), QDir::homePath()).toString());
lay->addWidget(txt, 1, 0);
lay->addWidget(chooser, 1, 1);
QDialogButtonBox *bb = new QDialogButtonBox;
connect(bb, SIGNAL(accepted()), &d, SLOT(accept()));
connect(bb, SIGNAL(rejected()), &d, SLOT(reject()));
QPushButton *copyBtn = bb->addButton(tr("&Copy Project and Open"), QDialogButtonBox::AcceptRole);
copyBtn->setDefault(true);
bb->addButton(tr("&Keep Project and Open"), QDialogButtonBox::RejectRole);
lay->addWidget(bb, 2, 0, 1, 2);
connect(chooser, SIGNAL(validChanged(bool)), copyBtn, SLOT(setEnabled(bool)));
if (d.exec() == QDialog::Accepted) {
QString exampleDirName = proFileInfo.dir().dirName();
QString toDir = chooser->path();
settings->setValue(QString::fromLatin1("General/ProjectsFallbackRoot"), toDir);
QDir toDirWithExamplesDir(toDir);
if (toDirWithExamplesDir.cd(exampleDirName)) {
toDirWithExamplesDir.cdUp(); // step out, just to not be in the way
QMessageBox::warning(topLevelWidget(), tr("Warning"),
tr("The specified location already exists. "
"Please specify a valid location."),
QMessageBox::Ok, QMessageBox::NoButton);
return;
} else {
QDir from = proFileInfo.dir();
from.cdUp();
copyRecursive(from, toDir, exampleDirName);
// set vars to new location
proFileInfo = QFileInfo(toDir + '/'+ exampleDirName + '/' + proFileInfo.fileName());
proFile = proFileInfo.absoluteFilePath();
}
}
}
QString tryFile;
files << proFile;
if (isQmlProject) {
tryFile = proFileInfo.path() + '/' + "/main.qml";
if(!QFile::exists(tryFile))
tryFile = proFileInfo.path() + "/qml/" + qmlMainFileName + ".qml";
// legacy qmlproject case
if(!QFile::exists(tryFile))
tryFile = proFileInfo.path() + '/' + qmlMainFileName + ".qml";
if(QFile::exists(tryFile))
files << tryFile;
} else {
tryFile = proFileInfo.path() + "/main.cpp";
if(!QFile::exists(tryFile))
tryFile = proFileInfo.path() + '/' + proFileInfo.baseName() + ".cpp";
}
Core::ICore::instance()->openFiles(files, static_cast<Core::ICore::OpenFilesFlags>(Core::ICore::SwitchMode | Core::ICore::StopOnLoadFail));
if (!tryFile.isEmpty() && Core::EditorManager::instance()->hasEditor(tryFile) && !helpFile.isEmpty())
slotOpenContextHelpPage(helpFile);
}
示例2: if
QWidget* GCF::ActionContainerWidget::createWidget(QAction* action, int rowSpan, int colSpan)
{
QWidget* ret = 0;
int gSize=int((fontMetrics().height()+fontMetrics().ascent())*1.2);
int minWidth = gSize*colSpan;
QWidgetAction* wAction = qobject_cast<QWidgetAction*>(action);
if(wAction)
ret = wAction->requestWidget(this);
else
{
QToolButton* tb = new QToolButton(this);
tb->setDefaultAction(action);
tb->setAutoRaise(true);
/*if(action->menu())
tb->setMenu(action->menu());*/
tb->setIconSize(QSize(gSize-4,gSize-4));
if(action->icon().isNull())
tb->setToolButtonStyle(Qt::ToolButtonTextOnly);
else if(colSpan == rowSpan && colSpan >= 2)
tb->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
else if(colSpan == rowSpan && colSpan == 1)
tb->setToolButtonStyle(Qt::ToolButtonIconOnly);
else if(colSpan >= 2 || rowSpan == 1)
tb->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
else if(rowSpan >= 3)
tb->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
int mw = 0;
if(tb->toolButtonStyle() != Qt::ToolButtonIconOnly)
mw += fontMetrics().width(action->iconText())+2*fontMetrics().width("_");
if(!action->icon().isNull())
{
switch(tb->toolButtonStyle())
{
case Qt::ToolButtonTextUnderIcon:
if(mw < gSize-4)
mw = gSize-4;
break;
case Qt::ToolButtonTextBesideIcon:
mw += gSize-4;
break;
}
}
if(minWidth < mw)
minWidth = mw;
if(action->menu())
{
// Connect the default action object to the tool button. This way
// when the toolbutton with menu is clicked, the default action is
// shown.
QList<QAction*> actions = action->menu()->actions();
QAction* defAction = 0;
for(int i=0; i<actions.count(); i++)
{
QAction* action = actions[i];
QList<QByteArray> propNames = action->dynamicPropertyNames();
if(propNames.contains("_default_"))
{
bool val = action->property("_default_").toBool();
if(val)
{
defAction = action;
break;
}
}
}
if(defAction)
{
if(defAction->isCheckable())
connect(tb, SIGNAL(clicked()), defAction, SLOT(toggle()));
else
connect(tb, SIGNAL(clicked()), defAction, SLOT(trigger()));
QFont font = defAction->font();
font.setBold(true);
defAction->setFont(font);
}
}
ret = tb;
}
ret->setMinimumSize(minWidth, gSize*rowSpan);
if(!action->icon().isNull())
{
QFont font = ret->font();
// font.setPointSize(font.pointSize()-1);
ret->setFont(font);
}
/*static QPlastiqueStyle Style;
ret->setStyle(&Style);*/
return ret;
//.........这里部分代码省略.........