forked from qt-creator/qt-creator
Merge branch 'master' of git@scm.dev.nokia.troll.no:creator/mainline
This commit is contained in:
@@ -5,13 +5,13 @@
|
|||||||
|
|
||||||
\title Qt Creator Manual
|
\title Qt Creator Manual
|
||||||
|
|
||||||
\section1 Version 0.9.1 (Beta)
|
\section1 Version 0.9.2 (Release Candidate)
|
||||||
|
|
||||||
The goal of Qt Creator is to provide a cross-platform, complete Integrated
|
The goal of Qt Creator is to provide a cross-platform, complete Integrated
|
||||||
Development Environment (IDE) to develop Qt projects. It is available for
|
Development Environment (IDE) to develop Qt projects. It is available for
|
||||||
the Linux, Mac OS X and Windows platforms.
|
the Linux, Mac OS X and Windows platforms.
|
||||||
|
|
||||||
\note The current version of Qt Creator is 0.9.2 (Beta). It is
|
\note The current version of Qt Creator is 0.9.2 (Release Candidate). It is
|
||||||
possible to edit source code, compile, run and debug applications; other
|
possible to edit source code, compile, run and debug applications; other
|
||||||
features are still under development. Please send bug reports and
|
features are still under development. Please send bug reports and
|
||||||
suggestions to qt-creator@trolltech.com. To subscribe, send a
|
suggestions to qt-creator@trolltech.com. To subscribe, send a
|
||||||
@@ -59,7 +59,7 @@
|
|||||||
\o \l{Tips and Tricks}
|
\o \l{Tips and Tricks}
|
||||||
\o \l{Keyboard Shortcuts}
|
\o \l{Keyboard Shortcuts}
|
||||||
\o \l{Glossary}
|
\o \l{Glossary}
|
||||||
\o \l{Known Issues of Version 0.9.1 (Beta)}
|
\o \l{Known Issues of Version 0.9.2 (Release Candidate)}
|
||||||
\endlist
|
\endlist
|
||||||
|
|
||||||
*/
|
*/
|
||||||
@@ -1406,25 +1406,12 @@
|
|||||||
\previouspage creator-keyboard-shortcuts.html
|
\previouspage creator-keyboard-shortcuts.html
|
||||||
\page creator-known-issues.html
|
\page creator-known-issues.html
|
||||||
|
|
||||||
\title Known Issues of Version 0.9.1 (Beta)
|
\title Known Issues of Version 0.9.2 (Release Candidate)
|
||||||
|
|
||||||
There are some known issues with Qt Creator 0.9.1 (Beta).
|
There are some known issues with Qt Creator 0.9.2 (Release Candidate).
|
||||||
The development team is aware of those, there is no need to report them as bug.
|
The development team is aware of those, there is no need to report them as bug.
|
||||||
|
|
||||||
\list
|
\list
|
||||||
\o The central editor sometimes loses it "changed" status marker.
|
|
||||||
|
|
||||||
\o There is a kernel bug essentially making debugging unreliable on
|
|
||||||
2.6.24 kernels for i386 (which is, unfortunately, the default on
|
|
||||||
Ubuntu 8.04). See
|
|
||||||
\l{https://bugs.launchpad.net/ubuntu/+source/gdb/+bug/230315/} for
|
|
||||||
details. The only solution to this problem is to boot another
|
|
||||||
kernel.
|
|
||||||
|
|
||||||
\o Gdb may take long to load debugging symbols, especially from large
|
|
||||||
libraries like \c libQtWebKit. Starting the debugging module can
|
|
||||||
take up to several minutes without visible progress.
|
|
||||||
|
|
||||||
\o Paths or file names containing spaces or special characters, e.g.,
|
\o Paths or file names containing spaces or special characters, e.g.,
|
||||||
colons, dollar signs, hash marks etc. may cause difficulties. This
|
colons, dollar signs, hash marks etc. may cause difficulties. This
|
||||||
is because some of the tools Qt Creator uses in the background have
|
is because some of the tools Qt Creator uses in the background have
|
||||||
@@ -1444,18 +1431,31 @@
|
|||||||
\o The file system sidebar does not update automatically. As a
|
\o The file system sidebar does not update automatically. As a
|
||||||
workaround, switch to another directory and then back.
|
workaround, switch to another directory and then back.
|
||||||
|
|
||||||
\o Loading KDE4 designer plugins breaks the style, due to a bug in KDE.
|
\o Loading KDE4 designer plugins breaks the style in KDE < 4.2.1
|
||||||
|
due to a bug in KDE.
|
||||||
|
|
||||||
\o Scopes in .pro files are ignored, and environment variables not expanded.
|
\o Scopes in .pro files are ignored, and environment variables not expanded.
|
||||||
|
|
||||||
\o Code completion for generated UI header files is not updated properly
|
\o Code completion for generated UI header files is updated only
|
||||||
after the first time.
|
after a build.
|
||||||
|
|
||||||
\o Code completion does not support typedefs (e.g. std::string) and
|
\o Code completion does not support typedefs for nested classes.
|
||||||
private classes (e.g. class MyClass::Data {};).
|
|
||||||
|
\o There is a kernel bug essentially making debugging unreliable on
|
||||||
|
2.6.24 kernels for i386 (which is, unfortunately, the default on
|
||||||
|
Ubuntu 8.04). See
|
||||||
|
\l{https://bugs.launchpad.net/ubuntu/+source/gdb/+bug/230315/} for
|
||||||
|
details. The only solution to this problem is to boot another
|
||||||
|
kernel.
|
||||||
|
|
||||||
|
\o Gdb may take long to load debugging symbols, especially from large
|
||||||
|
libraries like \c libQtWebKit. Starting the debugging module can
|
||||||
|
take up to several minutes without visible progress.
|
||||||
|
|
||||||
|
\o Setting breakpoints in files that do not have unique absolute
|
||||||
|
paths may fail. For example, remounting parts of a file system
|
||||||
|
using the --bind mount option.
|
||||||
|
|
||||||
\o On Gnome, after minimizing Qt Creator and restoring again, the
|
|
||||||
application window does not repaint properly until resized.
|
|
||||||
\endlist
|
\endlist
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@@ -116,8 +116,6 @@ QWidget *ShortcutSettings::createPage(QWidget *parent)
|
|||||||
|
|
||||||
commandChanged(0);
|
commandChanged(0);
|
||||||
|
|
||||||
delete m_page;
|
|
||||||
|
|
||||||
return w;
|
return w;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -131,6 +129,8 @@ void ShortcutSettings::finish()
|
|||||||
{
|
{
|
||||||
qDeleteAll(m_scitems);
|
qDeleteAll(m_scitems);
|
||||||
m_scitems.clear();
|
m_scitems.clear();
|
||||||
|
|
||||||
|
delete m_page;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ShortcutSettings::eventFilter(QObject *o, QEvent *e)
|
bool ShortcutSettings::eventFilter(QObject *o, QEvent *e)
|
||||||
|
@@ -218,7 +218,6 @@ void StackedEditorGroup::addEditor(IEditor *editor)
|
|||||||
|
|
||||||
void StackedEditorGroup::insertEditor(int index, IEditor *editor)
|
void StackedEditorGroup::insertEditor(int index, IEditor *editor)
|
||||||
{
|
{
|
||||||
EditorGroup::insertEditor(index, editor);
|
|
||||||
if (m_container->indexOf(editor->widget()) != -1)
|
if (m_container->indexOf(editor->widget()) != -1)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@@ -232,6 +231,9 @@ void StackedEditorGroup::insertEditor(int index, IEditor *editor)
|
|||||||
}
|
}
|
||||||
connect(editor, SIGNAL(changed()), this, SLOT(checkEditorStatus()));
|
connect(editor, SIGNAL(changed()), this, SLOT(checkEditorStatus()));
|
||||||
|
|
||||||
|
bool block = m_editorList->blockSignals(true);
|
||||||
|
EditorGroup::insertEditor(index, editor);
|
||||||
|
m_editorList->blockSignals(block);
|
||||||
emit editorAdded(editor);
|
emit editorAdded(editor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -77,7 +77,7 @@ QWidget *GeneralSettings::createPage(QWidget *parent)
|
|||||||
this, SLOT(resetExternalEditor()));
|
this, SLOT(resetExternalEditor()));
|
||||||
connect(m_page->helpExternalEditorButton, SIGNAL(clicked()),
|
connect(m_page->helpExternalEditorButton, SIGNAL(clicked()),
|
||||||
this, SLOT(showHelpForExternalEditor()));
|
this, SLOT(showHelpForExternalEditor()));
|
||||||
delete m_page;
|
|
||||||
return w;
|
return w;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -88,6 +88,11 @@ void GeneralSettings::apply()
|
|||||||
EditorManager::instance()->setExternalEditor(m_page->externalEditorEdit->text());
|
EditorManager::instance()->setExternalEditor(m_page->externalEditorEdit->text());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GeneralSettings::finish()
|
||||||
|
{
|
||||||
|
delete m_page;
|
||||||
|
}
|
||||||
|
|
||||||
void GeneralSettings::resetInterfaceColor()
|
void GeneralSettings::resetInterfaceColor()
|
||||||
{
|
{
|
||||||
m_page->colorButton->setColor(0x666666);
|
m_page->colorButton->setColor(0x666666);
|
||||||
|
@@ -56,7 +56,7 @@ public:
|
|||||||
QString trCategory() const;
|
QString trCategory() const;
|
||||||
QWidget* createPage(QWidget *parent);
|
QWidget* createPage(QWidget *parent);
|
||||||
void apply();
|
void apply();
|
||||||
void finish() { }
|
void finish();
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void resetInterfaceColor();
|
void resetInterfaceColor();
|
||||||
|
@@ -871,10 +871,11 @@ void ManhattanStyle::drawControl(ControlElement element, const QStyleOption *opt
|
|||||||
painter->setPen(StyleHelper::borderColor());
|
painter->setPen(StyleHelper::borderColor());
|
||||||
|
|
||||||
if (horizontal) {
|
if (horizontal) {
|
||||||
// Note: This is a hack to determine if we are the topmost
|
// Note: This is a hack to determine if the
|
||||||
// toolbar and menu bar should draw the outline
|
// toolbar should draw the top or bottom outline
|
||||||
|
// (needed for the find toolbar for instance)
|
||||||
QColor lighter(255, 255, 255, 40);
|
QColor lighter(255, 255, 255, 40);
|
||||||
if (widget->mapToParent(rect.topLeft()).y()) {
|
if (widget && widget->property("topBorder").toBool()) {
|
||||||
p->drawLine(rect.topLeft(), rect.topRight());
|
p->drawLine(rect.topLeft(), rect.topRight());
|
||||||
p->setPen(lighter);
|
p->setPen(lighter);
|
||||||
p->drawLine(rect.topLeft() + QPoint(0, 1), rect.topRight() + QPoint(0, 1));
|
p->drawLine(rect.topLeft() + QPoint(0, 1), rect.topRight() + QPoint(0, 1));
|
||||||
|
@@ -598,7 +598,11 @@ bool CppCodeCompletion::completeMember(const QList<TypeOfExpression::Result> &re
|
|||||||
if (ReferenceType *refTy = ty->asReferenceType())
|
if (ReferenceType *refTy = ty->asReferenceType())
|
||||||
ty = refTy->elementType();
|
ty = refTy->elementType();
|
||||||
|
|
||||||
if (NamedType *namedTy = ty->asNamedType()) {
|
if (Class *classTy = ty->asClass()) {
|
||||||
|
Symbol *symbol = result.second;
|
||||||
|
if (symbol && ! symbol->isClass())
|
||||||
|
classObjectCandidates.append(classTy);
|
||||||
|
} else if (NamedType *namedTy = ty->asNamedType()) {
|
||||||
// ### This code is pretty slow.
|
// ### This code is pretty slow.
|
||||||
const QList<Symbol *> candidates = context.resolve(namedTy->name());
|
const QList<Symbol *> candidates = context.resolve(namedTy->name());
|
||||||
foreach (Symbol *candidate, candidates) {
|
foreach (Symbol *candidate, candidates) {
|
||||||
@@ -689,12 +693,18 @@ bool CppCodeCompletion::completeMember(const QList<TypeOfExpression::Result> &re
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (PointerType *ptrTy = ty->asPointerType()) {
|
if (PointerType *ptrTy = ty->asPointerType()) {
|
||||||
|
if (ptrTy->elementType()->isNamedType()) {
|
||||||
// Replace . with ->
|
// Replace . with ->
|
||||||
int length = m_editor->position() - m_startPosition + 1;
|
int length = m_editor->position() - m_startPosition + 1;
|
||||||
m_editor->setCurPos(m_startPosition - 1);
|
m_editor->setCurPos(m_startPosition - 1);
|
||||||
m_editor->replace(length, QLatin1String("->"));
|
m_editor->replace(length, QLatin1String("->"));
|
||||||
++m_startPosition;
|
++m_startPosition;
|
||||||
namedTy = ptrTy->elementType()->asNamedType();
|
namedTy = ptrTy->elementType()->asNamedType();
|
||||||
|
}
|
||||||
|
} else if (Class *classTy = ty->asClass()) {
|
||||||
|
Symbol *symbol = result.second;
|
||||||
|
if (symbol && ! symbol->isClass())
|
||||||
|
classObjectCandidates.append(classTy);
|
||||||
} else {
|
} else {
|
||||||
namedTy = ty->asNamedType();
|
namedTy = ty->asNamedType();
|
||||||
if (! namedTy) {
|
if (! namedTy) {
|
||||||
|
@@ -620,6 +620,7 @@ bool DebuggerPlugin::initialize(const QStringList &arguments, QString *error_mes
|
|||||||
m_debugMode->setWidget(splitter2);
|
m_debugMode->setWidget(splitter2);
|
||||||
|
|
||||||
QToolBar *debugToolBar = new QToolBar;
|
QToolBar *debugToolBar = new QToolBar;
|
||||||
|
debugToolBar->setProperty("topBorder", true);
|
||||||
debugToolBar->addAction(am->command(ProjectExplorer::Constants::DEBUG)->action());
|
debugToolBar->addAction(am->command(ProjectExplorer::Constants::DEBUG)->action());
|
||||||
debugToolBar->addAction(am->command(Constants::INTERRUPT)->action());
|
debugToolBar->addAction(am->command(Constants::INTERRUPT)->action());
|
||||||
debugToolBar->addAction(am->command(Constants::NEXT)->action());
|
debugToolBar->addAction(am->command(Constants::NEXT)->action());
|
||||||
|
@@ -108,7 +108,11 @@ bool FormEditorPlugin::initialize(const QStringList &arguments, QString *error)
|
|||||||
addObject(m_factory);
|
addObject(m_factory);
|
||||||
|
|
||||||
// Make sure settings pages and action shortcuts are registered
|
// Make sure settings pages and action shortcuts are registered
|
||||||
FormEditorW::ensureInitStage(FormEditorW::RegisterPlugins);
|
// TODO we don't want to do a full initialization here,
|
||||||
|
// we actually want to call ensureInitStage(FormEditorW::RegisterPlugins)
|
||||||
|
// But due to a bug in kde 4.2.0 this crashes then when opening the file dialog
|
||||||
|
// This should be removed after 4.2.1 is out
|
||||||
|
FormEditorW::ensureInitStage(FormEditorW::FullyInitialized);
|
||||||
|
|
||||||
error->clear();
|
error->clear();
|
||||||
return true;
|
return true;
|
||||||
|
@@ -564,7 +564,7 @@ bool WorkbenchIntegration::navigateToSlot(const QString &objectName,
|
|||||||
// Find the class definition in the file itself or in the directly
|
// Find the class definition in the file itself or in the directly
|
||||||
// included files (order 1).
|
// included files (order 1).
|
||||||
QString namespaceName;
|
QString namespaceName;
|
||||||
const Class *cl;
|
const Class *cl = 0;
|
||||||
Document::Ptr doc;
|
Document::Ptr doc;
|
||||||
|
|
||||||
foreach (const Document::Ptr &d, docList) {
|
foreach (const Document::Ptr &d, docList) {
|
||||||
|
@@ -78,6 +78,7 @@ FindToolBar::FindToolBar(FindPlugin *plugin, CurrentDocumentFind *currentDocumen
|
|||||||
m_ui.setupUi(m_widget);
|
m_ui.setupUi(m_widget);
|
||||||
addWidget(m_widget);
|
addWidget(m_widget);
|
||||||
setFocusProxy(m_ui.findEdit);
|
setFocusProxy(m_ui.findEdit);
|
||||||
|
setProperty("topBorder", true);
|
||||||
|
|
||||||
connect(m_ui.findEdit, SIGNAL(editingFinished()), this, SLOT(invokeResetIncrementalSearch()));
|
connect(m_ui.findEdit, SIGNAL(editingFinished()), this, SLOT(invokeResetIncrementalSearch()));
|
||||||
|
|
||||||
@@ -225,16 +226,6 @@ FindToolBar::~FindToolBar()
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void FindToolBar::paintEvent(QPaintEvent *event)
|
|
||||||
{
|
|
||||||
QToolBar::paintEvent(event);
|
|
||||||
|
|
||||||
QPainter p(this);
|
|
||||||
const QRect r = rect();
|
|
||||||
p.setPen(StyleHelper::borderColor());
|
|
||||||
p.drawLine(r.topLeft(), r.topRight());
|
|
||||||
}
|
|
||||||
|
|
||||||
bool FindToolBar::eventFilter(QObject *obj, QEvent *event)
|
bool FindToolBar::eventFilter(QObject *obj, QEvent *event)
|
||||||
{
|
{
|
||||||
if ((obj == m_ui.findEdit || obj == m_findCompleter->popup())
|
if ((obj == m_ui.findEdit || obj == m_findCompleter->popup())
|
||||||
|
@@ -58,8 +58,6 @@ public:
|
|||||||
|
|
||||||
void invokeClearResults();
|
void invokeClearResults();
|
||||||
|
|
||||||
void paintEvent(QPaintEvent *event);
|
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void invokeFindNext();
|
void invokeFindNext();
|
||||||
void invokeFindPrevious();
|
void invokeFindPrevious();
|
||||||
|
@@ -76,6 +76,9 @@ void SearchResultTreeView::appendResultLine(int index, const QString &fileName,
|
|||||||
|
|
||||||
void SearchResultTreeView::emitJumpToSearchResult(const QModelIndex &index)
|
void SearchResultTreeView::emitJumpToSearchResult(const QModelIndex &index)
|
||||||
{
|
{
|
||||||
|
if (model()->data(index, ItemDataRoles::TypeRole).toString().compare("row") != 0)
|
||||||
|
return;
|
||||||
|
|
||||||
QString fileName = model()->data(index, ItemDataRoles::FileNameRole).toString();
|
QString fileName = model()->data(index, ItemDataRoles::FileNameRole).toString();
|
||||||
int position = model()->data(index, ItemDataRoles::ResultIndexRole).toInt();
|
int position = model()->data(index, ItemDataRoles::ResultIndexRole).toInt();
|
||||||
int lineNumber = model()->data(index, ItemDataRoles::ResultLineNumberRole).toInt();
|
int lineNumber = model()->data(index, ItemDataRoles::ResultLineNumberRole).toInt();
|
||||||
|
@@ -527,6 +527,9 @@ void SessionManager::setStartupProject(Project *startupProject)
|
|||||||
Q_ASSERT(m_file->m_projects.contains(startupProject));
|
Q_ASSERT(m_file->m_projects.contains(startupProject));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (m_file->m_startupProject == startupProject)
|
||||||
|
return;
|
||||||
|
|
||||||
m_file->m_startupProject = startupProject;
|
m_file->m_startupProject = startupProject;
|
||||||
emit startupProjectChanged(startupProject);
|
emit startupProjectChanged(startupProject);
|
||||||
}
|
}
|
||||||
|
@@ -38,9 +38,11 @@
|
|||||||
#include <QtCore/QStringList>
|
#include <QtCore/QStringList>
|
||||||
#include <QtGui/QWidget>
|
#include <QtGui/QWidget>
|
||||||
|
|
||||||
|
QT_BEGIN_NAMESPACE
|
||||||
class QWidget;
|
class QWidget;
|
||||||
class QLabel;
|
class QLabel;
|
||||||
class QLineEdit;
|
class QLineEdit;
|
||||||
|
QT_END_NAMESPACE
|
||||||
|
|
||||||
namespace Qt4ProjectManager {
|
namespace Qt4ProjectManager {
|
||||||
|
|
||||||
|
@@ -1841,6 +1841,7 @@ bool ProFileEvaluator::Private::evaluateConditionalFunction(const QString &funct
|
|||||||
dirstr = file.left(slsh+1);
|
dirstr = file.left(slsh+1);
|
||||||
file = file.right(file.length() - slsh - 1);
|
file = file.right(file.length() - slsh - 1);
|
||||||
}
|
}
|
||||||
|
if (file.contains('*') || file.contains('?'))
|
||||||
cond = QDir(dirstr).entryList(QStringList(file)).count();
|
cond = QDir(dirstr).entryList(QStringList(file)).count();
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
@@ -413,7 +413,7 @@ QStringList ResourceView::fileNamesToAdd()
|
|||||||
{
|
{
|
||||||
return QFileDialog::getOpenFileNames(this, tr("Open file"),
|
return QFileDialog::getOpenFileNames(this, tr("Open file"),
|
||||||
m_qrcModel->absolutePath(QString()),
|
m_qrcModel->absolutePath(QString()),
|
||||||
tr("All files (*.*)"));
|
tr("All files (*)"));
|
||||||
}
|
}
|
||||||
|
|
||||||
void ResourceView::onAddFiles()
|
void ResourceView::onAddFiles()
|
||||||
|
Reference in New Issue
Block a user