Здесь я сохраняю настройки:
QSettings *settings=new QSettings(AppFileName, QSettings::IniFormat);
settings->clear();
//Параметры главного окна
settings->beginGroup("MainWindow");
settings->setValue("pos", pos());
settings->setValue("size", size());
settings->endGroup();
//Параметры сплиттера (ширина всех виджетов в сплиттере)
settings->beginWriteArray("Splitter");
QList<int> SpSizes=splitter->sizes();
QListIterator<int> it(SpSizes);
int i=0;
while(it.hasNext())
{
settings->setArrayIndex(i++);
settings->setValue("width",it.next());
}
settings->endArray();
//Параметры проекта
settings->beginGroup("Project");
settings->setValue("FilePath", ProjectRMS->fileName());
settings->endGroup();
//Параметры дерева
settings->beginGroup("Tree");
QTreeWidgetItem *CurrItem=MainTreeView->currentItem();//FindItem(FileNumber);
QString FileNumber=CurrItem->text(1);
settings->setValue("ItemNumber",FileNumber);
settings->endGroup();
//Параметры действий
settings->beginGroup("Actions");
settings->setValue("EditViewMode",EditViewModeAction->isChecked());
settings->setValue("ViewCurse",ViewCurseAction->isChecked());
settings->setValue("ViewHideItems",ViewHideItemsAction->isChecked());
settings->setValue("ViewTreeNum",ViewTreeNumAction->isChecked());
settings->endGroup();
delete settings;
Здесь их читаю:
QString AppFileName=qApp->applicationDirPath()+"/rms.ini";
if(!QFile::exists(AppFileName))
return;
QSettings *settings=new QSettings(AppFileName, QSettings::IniFormat);
//settings.clear();
//return;
//Параметры главного окна
settings->beginGroup("MainWindow");
QPoint MWPos=settings->value("pos", QPoint(0, 0)).toPoint();
QSize MWSize=settings->value("size", QSize(962, 667)).toSize();
settings->endGroup();
//Параметры сплиттера (ширина всех виджетов в сплиттере)
int size=settings->beginReadArray("Splitter");
if(size==0)
{
settings->endArray();
return;
}
QList<int> SpSizes;
for(int i=0;i<size;i++)
{
settings->setArrayIndex(i);
SpSizes<<settings->value("width").toInt();
}
settings->endArray();
//Параметры проекта
settings->beginGroup("Project");
QString ProjectFile=settings->value("FilePath").toString();
if(ProjectFile.isEmpty())
{
settings->endGroup();
return;
}
settings->endGroup();
//Параметры дерева
settings->beginGroup("Tree");
QString FileNumber=settings->value("ItemNumber").toString();
settings->endGroup();
//Параметры действий
settings->beginGroup("Actions");
bool EVA=settings->value("EditViewMode").toBool();
bool VCA=settings->value("ViewCurse").toBool();
bool VHA=settings->value("ViewHideItems").toBool();
bool VTN=settings->value("ViewTreeNum").toBool();
settings->endGroup();
delete settings;
//Установка параметров
splitter->setSizes(SpSizes);
resize(MWSize);
move(MWPos);
OpenProject(ProjectFile);//Открытие проекта
QTreeWidgetItem *CurrItem=MainTreeView->FindItem(FileNumber);
MainTreeView->setCurrentItem(CurrItem);
QString FileName=CurrItem->data(1,Qt::UserRole).toString();
MainTextEdit->LoadCurrFile(FileName);
EditViewModeAction->setChecked(EVA);
ViewCurseAction->setChecked(VCA);
ViewHideItemsAction->setChecked(VHA);
ViewTreeNumAction->setChecked(VTN);
SetTextActions(EVA);
А здесь вываливается:
bool TextEdit::event(QEvent *event)
{
if(event->type()==QEvent::ToolTip)
{
QHelpEvent *helpEvent = static_cast<QHelpEvent *>(event);
QTextCursor Cursor=cursorForPosition(helpEvent->pos());
int Pos=Cursor.position();
QString ToolTipText=GetToolTipPos(Pos);//Вываливается на этой функции
if(!ToolTipText.isEmpty())
QToolTip::showText(helpEvent->globalPos(), ToolTipText);
}
return QWidget::event(event);
}
Функция где вываливается:
int ToolTipCount, SPos, EPos;
QString FileNumber;
QString Ret, Name;
QStringList ToolTips=mainWin->ToolTipsINI->childGroups();
Вываливается на последней строчке, причем не с ошибкой а просто происходит останов в описании класса QSettings.