Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 25.02.2011
Сообщений: 5

вылетает прога QTreeView->setRootIndex

25.02.2011, 22:28. Показов 1960. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток. Задал вопрос в разделе для начинающих, но пока без ответа. Так что не обижайтесь, что я к вам со всякой фигней. Вопрос в чем, переопределяю в слоте QTreeView->setRootIndex для модели QDirModel. При этом, соответственно, надеюсь, что отображаться начнут новые директрории (пути заданны в комбобоксе). Но прога вылетает с сообщением в отладчике: "Программа неожиданно завершилась."
Подскажите пожалуйста, я так понял, что так делать нельзя? И как можно, в какую сторону копать? C QT недавно начал, сам не разберусь ;(.
Помогите, плз, бедному дизагнЁру .
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.02.2011, 22:28
Ответы с готовыми решениями:

Вылетает qt прога
У меня qt программа вылетает периодически по одному и тому же смещению. Имя события проблемы: APPCRASH Имя приложения: myApp.exe ...

Вылетает прога
Час понять не могу в чем ошибка #include <stdio.h> #include <stdlib.h> int main() { int a, b, n, m, i, j; ...

Прога вылетает с ошибкой
Здрасте! На диске есть файл AutoDVD.exe (последняя фотка) Его запускаешь и он должен установить прогу. Однако он всегда выдает...

5
 Аватар для dxdy
99 / 99 / 14
Регистрация: 14.06.2010
Сообщений: 284
26.02.2011, 03:00
можно код программы...
0
0 / 0 / 0
Регистрация: 25.02.2011
Сообщений: 5
26.02.2011, 11:40  [ТС]
Цитата Сообщение от dxdy Посмотреть сообщение
можно код программы...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
/********************************************************************
* main.cpp
*********************************************************************/
#include <QApplication>
#include <QDebug>
#include "window.h"
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
        Window window;
        window.show();
    return app.exec();
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
/*********************************************************************
* window.h
**********************************************************************/
#ifndef WINDOW_H
#define WINDOW_H
#include <QApplication>
#include <QtGui>
#include <QDialog>
#include <QDir>
#include <QDirModel>
 
class Window : public QDialog
{
    Q_OBJECT
 
public:
    Window(QWidget *parent = 0);
 
private slots:
    void browse();
    void list();
public:
    QDirModel *create_model();
    QString directory;
    QDirModel *model;
    QTreeView *dirTreeView;
private:
    QComboBox *createComboBox(const QString &text = QString());
    QPushButton *createButton(const QString &text, const char *member);
 
    QVBoxLayout *vLayout;
 
    QLabel *controlLabel;
    QComboBox *directoryComboBox;
    QPushButton *browseButton;
    QLabel *directoryLabel;
 
    QDir *dir;
 
};
#endif // WINDOW_H
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
/*********************************************************************
* window.cpp
**********************************************************************/
#include <QtGui>
#include <QApplication>
#include <QDir>
#include <QDirModel>
#include <QDebug>
 
#include "window.h"
 
Window::Window(QWidget *parent)
    : QDialog(parent)
{
    // [set utf8]
    QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
 
    directoryLabel = new QLabel(tr("In directory:"));
 
    // [{]
        // [model]
 
        QString directory = QFileDialog::getExistingDirectory(this,
                                                              tr("BROWSE"), QDir::homePath());
        QDirModel *model = new QDirModel;
        model->setReadOnly(false);
 
        // [dir model -> view]
        QTreeView *dirTreeView = new QTreeView();
        dirTreeView->setModel(model);
        dirTreeView->setRootIndex( model->index( directory ) );
 
        // [box]
        QVBoxLayout *vLayout = new QVBoxLayout;
 
        // [box + dir]
        vLayout->addWidget(dirTreeView);
 
        // [box +control]
        QLabel *controlLabel = new QLabel(tr("Выбрана директория:"));
        vLayout->addWidget(controlLabel);
 
        directoryComboBox = createComboBox(QDir::homePath());
        vLayout->addWidget(directoryComboBox);
 
        browseButton = createButton(tr("&Browse..."), SLOT(browse()));
        vLayout->addWidget(browseButton);
        QObject::connect( browseButton, SIGNAL(clicked()), SLOT( list() ));
 
        // [dialog]
        setLayout(vLayout);
        setWindowTitle((directory));
 
        resize(640, 480);
 
 
    // [}]
}
 
// [SLOT]
void Window::list()
{
    directory =  directoryComboBox->currentText();
    dirTreeView->setRootIndex( model->index( directory ));
}
 
void Window::browse()
{
    directory = QFileDialog::getExistingDirectory(this,
                               tr("BROWSE"), QDir::homePath());
 
    if (!directory.isEmpty()) {
        if (directoryComboBox->findText(directory) == -1)
            directoryComboBox->addItem(directory);
        directoryComboBox->setCurrentIndex(directoryComboBox->findText(directory));
    }
}
 
QComboBox *Window::createComboBox(const QString &text)
{
    QComboBox *comboBox = new QComboBox;
    comboBox->setEditable(true);
    comboBox->addItem(text);
    comboBox->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
    return comboBox;
}
 
QPushButton *Window::createButton(const QString &text, const char *member)
{
    QPushButton *button = new QPushButton(text);
    connect(button, SIGNAL(clicked()), this, member);
    return button;
}
0
 Аватар для dxdy
99 / 99 / 14
Регистрация: 14.06.2010
Сообщений: 284
26.02.2011, 13:13
что вы хотели сделать в этой строчке?
C++
1
connect(button, SIGNAL(clicked()), this, member);
0
0 / 0 / 0
Регистрация: 25.02.2011
Сообщений: 5
26.02.2011, 13:21  [ТС]
Цитата Сообщение от dxdy Посмотреть сообщение
что вы хотели сделать в этой строчке?
C++
1
connect(button, SIGNAL(clicked()), this, member);
тут-то как раз не вопрос, по этой схеме в member передается имя слота и метод возвращает готовую кнопку с заданным слотом. Можно вызывать этот метод для разных кнопок, задавая им произвольные слоты. Это, кстати, из стандартой троллевской документации.
0
0 / 0 / 0
Регистрация: 25.02.2011
Сообщений: 5
28.02.2011, 20:11  [ТС]
Вопрос закрыт. Проблема была в области видимости при инициализации модели и вида в конструкторе. Спасибо ребятам из QT DevNet Forums, дизаГнёра подвело плохое знание основ С++ ))))))
Ну и спасибо админам и програмерам, Задорнову особый привет, блин.
Кстати, правильно так:

C++
1
2
        model = new QDirModel;
        dirTreeView = new QTreeView();
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.02.2011, 20:11
Помогаю со студенческими работами здесь

Списки. Вылетает прога!
program Project1; {$APPTYPE CONSOLE} uses SysUtils, Windows; type TElem=integer; TList=^Node;

Прога вылетает на принтфе
ошибочка, нa getchar() вылет #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;windows.h&gt; #include &quot;types.h&quot; void Initialize(); ...

Вылетает прога, надо проверить
case WM_COMMAND: { switch(LOWORD(wParam)){ case 0: { if(GetWindowText(EDIT,vivodc,255)==NULL){ ...

C++ почему прога вылетает, не успеваю посмотреть действие
дан массив строк, если какая либо строка заканчивается буквой k, то удалить эту строку, вод что я написал: #include &lt;iostream.h&gt; ...

Прога вылетает в вижуал студии , как исправить?
#include &lt;stdio.h&gt; #include &lt;locale.h&gt; int main() { setlocale(LC_ALL, &quot;rus&quot;); float x1, x2, x3, y1, y2, y3; float a, b; int...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru