crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

Anticross
  опции профиля:
сообщение 17.4.2010, 10:40
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 22
Регистрация: 31.3.2010
Пользователь №: 1579

Спасибо сказали: 0 раз(а)




Репутация:   0  


У меня есть полностью рабочий проект написанный в VS 2005 с ипользованием библиотеки QT. Он отлично компилится и звпускается, но когда я пинес его домой и запустил в той же VS 2005(Дома у меня среда тоже настроена и откомпилирована qt), при компиляции проэкта после запуска выдается ошибка:"ASSERT failure in QList<T>::operator[]: "index out of range",
file ../../include/QtCore/../../src/corelib/tools/qlist.h"

В чем может быть проблема и как ее правильно решить ? Пожалуйста помогите.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Anticross
  опции профиля:
сообщение 17.4.2010, 15:13
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 22
Регистрация: 31.3.2010
Пользователь №: 1579

Спасибо сказали: 0 раз(а)




Репутация:   0  


Я использую QListWidget :
Раскрывающийся текст
contentsWidget = new QListWidget;
contentsWidget->setViewMode(QListView::IconMode);
contentsWidget->setIconSize(QSize(50, 50));
contentsWidget->setMovement(QListView::Static);
contentsWidget->setFixedSize(80,250);
contentsWidget->setSpacing(10);

#include <QtGui>
#include <QSettings>

#include "ConnectDialog.h"
#include "ConnectPanelUSB.h"
#include "ConnectPanelEthernet.h"
#include "ConnectPanelServer.h"

ConnectDialog::ConnectDialog(QWidget * parent): QDialog(parent, Qt::WindowSystemMenuHint | Qt::WindowTitleHint)
{

    setModal(true);
    setWindowIcon(QPixmap("Icons\\plug.png"));
    setFixedSize(350,357);

    contentsWidget = new QListWidget;
    contentsWidget->setViewMode(QListView::IconMode);
    contentsWidget->setIconSize(QSize(50, 50));
    contentsWidget->setMovement(QListView::Static);
    contentsWidget->setFixedSize(80,250);
    contentsWidget->setSpacing(10);

    pagesWidget = new QStackedWidget;
    pagesWidget->addWidget(new ConnectPanelUSB);
    pagesWidget->addWidget(new ConnectPanelEthernet);
    pagesWidget->addWidget(new ConnectPanelServer);
    
    m_statusLabel = new QLabel;
    m_statusIcon = new QLabel;

    connect(pagesWidget->widget(0), SIGNAL(errorValidate(QString)),this, SLOT(onErrorValidate(QString)));
    connect(pagesWidget->widget(1), SIGNAL(errorValidate(QString)),this, SLOT(onErrorValidate(QString)));
    connect(pagesWidget->widget(2), SIGNAL(errorValidate(QString)),this, SLOT(onErrorValidate(QString)));

    QPushButton *buttonCancel = new QPushButton(tr("Cancel"));
    QPushButton *buttonOK = new QPushButton(tr("OK"));
    buttonOK->setDefault(true);

    createIcons();
    contentsWidget->setCurrentRow(0);

    connect(buttonCancel, SIGNAL(clicked()), this, SLOT(close()));

    connect(pagesWidget->widget(0), SIGNAL(validateOK()), this, SLOT(close()));
    connect(pagesWidget->widget(1), SIGNAL(validateOK()), this, SLOT(close()));
    connect(pagesWidget->widget(2), SIGNAL(validateOK()), this, SLOT(close()));

    connect(buttonOK, SIGNAL(clicked()), pagesWidget->widget(0), SLOT(onOK()));
    connect(buttonOK, SIGNAL(clicked()), pagesWidget->widget(1), SLOT(onOK()));
    connect(buttonOK, SIGNAL(clicked()), pagesWidget->widget(2), SLOT(onOK()));

    QHBoxLayout *horizontalLayout = new QHBoxLayout;
    horizontalLayout->addWidget(contentsWidget);
    horizontalLayout->addWidget(pagesWidget, 1);
    horizontalLayout->addStretch(1);

    QHBoxLayout *statusLayout = new QHBoxLayout;
    statusLayout->setAlignment(Qt::AlignLeft);
    statusLayout->addWidget(m_statusIcon);
    statusLayout->addWidget(m_statusLabel);

    QFrame * lineSeparator = new QFrame;
    lineSeparator->setFrameStyle(QFrame::HLine|QFrame::Sunken);

    QHBoxLayout *buttonsLayout = new QHBoxLayout;
    buttonsLayout->addStretch(1);
    buttonsLayout->addWidget(buttonOK);
    buttonsLayout->addWidget(buttonCancel);

    QVBoxLayout *mainLayout = new QVBoxLayout;
    mainLayout->addLayout(horizontalLayout);
    mainLayout->addStretch(1);
    mainLayout->addSpacing(12);
    mainLayout->addLayout(statusLayout);
    mainLayout->addWidget(lineSeparator);
    mainLayout->addLayout(buttonsLayout);
    setLayout(mainLayout);

    connect(pagesWidget->widget(0), SIGNAL(changeField()), this, SLOT(onChangeField()));
    connect(pagesWidget->widget(1), SIGNAL(changeField()), this, SLOT(onChangeField()));
    connect(pagesWidget->widget(2), SIGNAL(changeField()), this, SLOT(onChangeField()));

    setWindowTitle(tr("Connection"));
    readSettings();
}
void ConnectDialog::createIcons()
{
    QListWidgetItem *usb = new QListWidgetItem(contentsWidget);
    usb->setIcon(QPixmap("Icons\\usb.png"));
    usb->setText(tr("USB"));
    usb->setToolTip(tr("Connect to station via USB"));
    usb->setTextAlignment(Qt::AlignHCenter);
    usb->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);

    QListWidgetItem *ethernet = new QListWidgetItem(contentsWidget);
    ethernet->setIcon(QPixmap("Icons\\ethernet.png"));
    ethernet->setText(tr("Ethernet"));
    ethernet->setToolTip(tr("Connect to station via Ethernet"));
    ethernet->setTextAlignment(Qt::AlignHCenter);
    ethernet->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);

    QListWidgetItem *server = new QListWidgetItem(contentsWidget);
    server->setIcon(QPixmap("Icons\\server.png"));
    server->setText(tr("Server"));
    server->setToolTip(tr("Connect to station via Server"));
    server->setTextAlignment(Qt::AlignHCenter);
    server->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);

    connect(contentsWidget,    SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)),this, SLOT(changePage(QListWidgetItem*,QListWidgetItem*)));
}
void ConnectDialog::changePage(QListWidgetItem *current, QListWidgetItem *previous)
{
    if (!current)
        current = previous;

    pagesWidget->setCurrentIndex(contentsWidget->row(current));
}
void ConnectDialog::onErrorValidate(QString text)
{
    m_statusIcon->setPixmap(QPixmap("Icons\\warning.png"));
    m_statusLabel->setText(text);
}
void ConnectDialog::onChangeField()
{
    m_statusIcon->clear();
    m_statusLabel->clear();
}
void ConnectDialog::writeSettings()
{
    QSettings settings("Stalenergo", "ASSC-D");

    settings.setValue("ActivePanel",pagesWidget->currentIndex());
}
void ConnectDialog::readSettings()
{
    QSettings settings("Stalenergo", "ASSC-D");

    pagesWidget->setCurrentIndex(settings.value("ActivePanel").toInt());
    contentsWidget->setCurrentRow(settings.value("ActivePanel").toInt());
}
void ConnectDialog::closeEvent(QCloseEvent * event)
{
    writeSettings();
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 13.6.2025, 22:18