Russian Qt Forum
Ноябрь 25, 2024, 12:34 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Ошибка с кодом -1073741819  (Прочитано 5560 раз)
demaker
Птица говорун
*****
Offline Offline

Сообщений: 962


Просмотр профиля
« : Ноябрь 08, 2012, 11:02 »

Добрый день!

Переписал пример с книги,все компилится.
Запускаю,вроде работает.
когда начинаю производить дальнейшие манипуляции то выкидывает ошибку с кодом -1073741819.

Проблема в этой части кода, но я не могу понять где именно.
   
    QList<QMdiSubWindow*>winList = mdiArea->subWindowList();
    separatorAct->setVisible(!winList.isEmpty());
    for(int i = 0; i<winList.size(); ++i)
    {
        MdiChildJournal* child = qobject_cast<MdiChildJournal*>(winList.at(i)->widget());

        QString text;
        if(i<9)
        {
            text = tr("&%1 &%2").arg(i+1).arg(child->userFriendlyCurrentFile());
        }
        else
        {
            text = tr("&%1 &%2").arg(i+1).arg(child->userFriendlyCurrentFile());
        }

        QAction*action = windowMenu->addAction(text);
        action->setCheckable(true);
        action->setChecked(child==activeMdiChild());
        connect(action,SIGNAL(triggered()),windowMapper,SLOT(map()));
        windowMapper->setMapping(action,winList.at(i));


Что делать?

« Последнее редактирование: Ноябрь 08, 2012, 11:05 от demaker » Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Ноябрь 08, 2012, 11:54 »

1. Какие манипуляции?
2. Дебажил?
3. Оформляй тегом code.
4. Давай больше кода.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
demaker
Птица говорун
*****
Offline Offline

Сообщений: 962


Просмотр профиля
« Ответ #2 : Ноябрь 08, 2012, 12:19 »

Код:

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    mdiArea = new QMdiArea;
    setCentralWidget(mdiArea);
    connect(mdiArea,SIGNAL(subWindowActivated(QMdiSubWindow*)),this, SLOT(updateMenus()));

    windowMapper = new QSignalMapper(this);
    connect(windowMapper,SIGNAL(mapped(QWidget*)),this,SLOT(setActiveSubWindow(QWidget*)));

    mdiArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded);
    mdiArea->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);

    createActions();
    createMenus();
    createToolBars();
    createStatusBar();
    updateMenus();
    setWindowTitle(tr("MDI"));
    setGeometry(200,200,400,200);

    /*p_lblX = new QLabel(this);
    p_lblY = new QLabel(this);
    */
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::mouseMoveEvent(QMouseEvent *pe)
{
    //p_lblX->setText("X="+QString().setNum(pe->x()));
    //p_lblY->setText("Y="+QString().setNum(pe->y()));
}

void MainWindow::closeEvent(QCloseEvent *pe)
{
    //???????????????????????????
    mdiArea->closeAllSubWindows();
    //if(activeMdiChild())
    //{
    //    pe->ignore();
    //}
    //else
    //{
    //   pe->accept();
    //}
}

void MainWindow::newFile()
{
    MdiChildJournal* child = createMdiChild();
    child->newFile();
    child->show();
}

void MainWindow::about()
{

}

void MainWindow::updateMenus()
{

}

void MainWindow::updateWindowMenu()
{
    windowMenu->clear();
    windowMenu->addAction(closeAct);
    windowMenu->addAction(closeAllAct);
    windowMenu->addSeparator();
    windowMenu->addAction(nextAct);

    /*QList<QMdiSubWindow*>winList = mdiArea->subWindowList();
    separatorAct->setVisible(!winList.isEmpty());
    for(int i = 0; i<winList.size(); ++i)
    {
        MdiChildJournal* child = qobject_cast<MdiChildJournal*>(winList.at(i)->widget());

        QString text;
        if(i<9)
        {
            text = tr("&%1 &%2").arg(i+1).arg(child->userFriendlyCurrentFile());
        }
        else
        {
            text = tr("&%1 &%2").arg(i+1).arg(child->userFriendlyCurrentFile());
        }

        QAction*action = windowMenu->addAction(text);
        action->setCheckable(true);
        action->setChecked(child==activeMdiChild());
        connect(action,SIGNAL(triggered()),windowMapper,SLOT(map()));
        windowMapper->setMapping(action,winList.at(i));
    }
    */
}

MdiChildJournal* MainWindow::createMdiChild()
{
    MdiChildJournal*child = new MdiChildJournal();
    mdiArea->addSubWindow(child);
    return child;
}

void MainWindow::createActions()
{
    newAct = new QAction(tr("&New"),this);
    newAct->setShortcut(tr("Ctrl+N"));
    newAct->setStatusTip(tr("Create new journal"));
    connect(newAct,SIGNAL(triggered()),this,SLOT(newFile()));

    exitAct = new QAction(tr("&Exit"),this);
    exitAct->setShortcut(tr("Alt+X"));
    exitAct->setStatusTip(tr("Exit"));

    closeAct = new QAction(tr("&Close"),this);
    closeAct->setShortcut(tr("Alt+C"));
    closeAct->setStatusTip(tr("Close Window"));

    closeAllAct = new QAction(tr("&Close All"),this);
    closeAllAct->setShortcut(tr("Alt+A"));
    closeAllAct->setStatusTip(tr("Close All Window"));

    nextAct = new QAction(tr("&Next"),this);
    nextAct->setShortcut(tr("Shift+N"));
    nextAct->setStatusTip(tr("Next Window"));
}

void MainWindow::createMenus()
{
    fileMenu = menuBar()->addMenu(tr("&File"));
    fileMenu->addAction(newAct);
    fileMenu->addSeparator();
    fileMenu->addAction(exitAct);

    windowMenu = menuBar()->addMenu(tr("&Window"));
    updateMenus();
    connect(windowMenu,SIGNAL(aboutToShow()),this,SLOT(updateWindowMenu()));
    menuBar()->addSeparator();
}

void MainWindow::createToolBars()
{

}

void MainWindow::createStatusBar()
{

}

MdiChildJournal*MainWindow::activeMdiChild()
{

}

QMdiSubWindow*MainWindow::findMdiChild(const QString &fileName)
{

}

void MainWindow::setActiveSubWindow(QWidget *window)
{

}


Хочу сделать MDI
При нажатии на window в меню вылетает Грустный с ошибкой  -1073741819

Если надо могу преслать код MdiChildJournal
Записан
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #3 : Ноябрь 08, 2012, 13:39 »

Обращение к несозданному или удалённому объекту.
Локализуйте с помощью дебагера до строчки и выясняйте что там с объектом.
Записан
demaker
Птица говорун
*****
Offline Offline

Сообщений: 962


Просмотр профиля
« Ответ #4 : Ноябрь 08, 2012, 14:51 »

Работал в отладчики
выдал сообщение

Приложение было остановлено т.к получило сигнал от операционный системы.
Сигнал: SIGSGV
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #5 : Ноябрь 08, 2012, 14:56 »

А посмотреть стектрейс?
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
demaker
Птица говорун
*****
Offline Offline

Сообщений: 962


Просмотр профиля
« Ответ #6 : Ноябрь 08, 2012, 15:03 »

 Шокированный
Записан
demaker
Птица говорун
*****
Offline Offline

Сообщений: 962


Просмотр профиля
« Ответ #7 : Ноябрь 09, 2012, 09:28 »

А где это такое находится Непонимающий
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.158 секунд. Запросов: 22.