Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Qt и кроссплатформенное программирование С/С++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.01.2013, 15:53   #1
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию Не создаётся второе диалоговое окно из первого.

Всем привет! Я создаю диалоговое окно:



При нажатии на кнопку Add должно создаваться ещё одно диалоговое окно. Но вместо этого появляется сообщение:



В коде отметил красным, как я создаю второе диалоговое окно (все файлы проекта приложил в архиве):

Код:
#include "phonedialog.h"
#include "editdialog.h"
#include <QPushButton>
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QTextEdit>

#include <QFile>
#include <QTextStream>

#include <QDomDocument>
#include <QDomElement>
#include <QDomText>

#include <QMessageBox>

PhoneDialog::PhoneDialog(QWidget *parent) :
    QDialog(parent)
{
    QVBoxLayout *editlayout = new QVBoxLayout;
    listEdit = new QTextEdit;
    editlayout->addWidget(listEdit);

    // Buttons
    QVBoxLayout *btnlayout = new QVBoxLayout;
    addNewButton = new QPushButton(tr("Add"));
    btnlayout->addWidget(addNewButton);

    editButton = new QPushButton(tr("Edit"));
    btnlayout->addWidget(editButton);

    deleteButton = new QPushButton(tr("Delete"));
    btnlayout->addWidget(deleteButton);

    btnlayout->addStretch();

    clearAllButton = new QPushButton(tr("Clear"));
    btnlayout->addWidget(clearAllButton);

    QHBoxLayout *mainLayout = new QHBoxLayout(this);
    mainLayout->addLayout(editlayout);
    mainLayout->addLayout(btnlayout);

    this->setWindowTitle(tr("Phone Book"));

    connect(addNewButton, SIGNAL(clicked()), this, SLOT(addItem()));
    connect(editButton, SIGNAL(clicked()), this, SLOT(editItem()));
    connect(deleteButton, SIGNAL(clicked()), this, SLOT(deleteItem()));
}


void PhoneDialog::addItem()
{
    editdlg = new EditDialog();
    editdlg->show();
}

void PhoneDialog::editItem()
{
}

void PhoneDialog::deleteItem()
{

}
Заранее спасибо!

С уважением Иван
Вложения
Тип файла: zip phonebook.zip (2.3 Кб, 5 просмотров)
8Observer8 вне форума Ответить с цитированием
Старый 05.01.2013, 14:13   #2
xwicked
Участник клуба
 
Аватар для xwicked
 
Регистрация: 21.03.2010
Сообщений: 1,508
Восклицание

editdialog.cpp:
Код:
EditDialog::EditDialog(QWidget *parent) :
    QDialog(parent)
{
...

    QVBoxLayout *mainLayout = new QVBoxLayout(this);
    mainLayout->addLayout(nameLayout);
    mainLayout->addLayout(numberLayout);
    mainLayout->addStretch();
    //buttonLayout->addLayout(buttonLayout); //<------
    mainLayout->addLayout(buttonLayout);

    this->setWindowTitle(tr("Phone Bood Entry"));
}
Google - лучший помощник программиста.
---
моя лаборатория | мой FaceBook
xwicked вне форума Ответить с цитированием
Старый 05.01.2013, 18:24   #3
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Спасибо огромное!
8Observer8 вне форума Ответить с цитированием
Старый 05.01.2013, 19:29   #4
xwicked
Участник клуба
 
Аватар для xwicked
 
Регистрация: 21.03.2010
Сообщений: 1,508
Радость

Цитата:
Сообщение от 8Observer8 Посмотреть сообщение
Спасибо огромное!
Да, не за что. Это обычная трассировочка.
Google - лучший помощник программиста.
---
моя лаборатория | мой FaceBook
xwicked вне форума Ответить с цитированием
Старый 05.01.2013, 19:44   #5
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Цитата:
Сообщение от xwicked Посмотреть сообщение
Да, не за что. Это обычная трассировочка.
А как это? Может приём какой - трассировка? Я не слышал. Как в Qt это делается?
8Observer8 вне форума Ответить с цитированием
Старый 05.01.2013, 19:59   #6
xwicked
Участник клуба
 
Аватар для xwicked
 
Регистрация: 21.03.2010
Сообщений: 1,508
Восклицание

Цитата:
Сообщение от 8Observer8 Посмотреть сообщение
А как это? Может приём какой - трассировка? Я не слышал. Как в Qt это делается?
Цитата:
Трассировка программы во многом аналогичная ее выполнению по
шагам. Единственное исключение состоит в том, что когда встреча-
ется оператор вызова процедуры или функции, при трассировке эти
процедуры и функции также выполняются по шагам, а при простом вы-
полнении по шагам управление возвращается вам после завершения
выполнения подпрограммы.
http://borlpasc.narod.ru/docym/br/6/6.8.htm
Хотя я навскидку посмотрел, что проблема может быть в конструкторе и туда поставил точку прерывания. 6 секунд нажатия F10(QtCreator) и всё.
Google - лучший помощник программиста.
---
моя лаборатория | мой FaceBook
xwicked вне форума Ответить с цитированием
Старый 06.01.2013, 00:05   #7
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

А теперь понял, но у меня всё равно не работает выполнение пошагам. Eсли кто-нибудь подскажет, буду признателен.


Последний раз редактировалось 8Observer8; 06.01.2013 в 03:58.
8Observer8 вне форума Ответить с цитированием
Старый 06.01.2013, 13:15   #8
xwicked
Участник клуба
 
Аватар для xwicked
 
Регистрация: 21.03.2010
Сообщений: 1,508
Восклицание

Цитата:
Сообщение от 8Observer8 Посмотреть сообщение
А теперь понял, но у меня всё равно не работает выполнение пошагам. Eсли кто-нибудь подскажет, буду признателен....
Пошарься по папке с Qt, там должны быть библиотеки типа QtCore.dll и QtCored.dll. Если с буквой d нету. Значит нужно доустановить.
Потом проверь отладчик установлен у тебя или нет в "Инструментарии".
Потом проверь, чтобы не было
Код:
CONFIG += RELEASE
в .pro файле проекта.
Ну и "Сборка" должна быть "Отладка".
Google - лучший помощник программиста.
---
моя лаборатория | мой FaceBook
xwicked вне форума Ответить с цитированием
Старый 06.01.2013, 14:14   #9
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Цитата:
Сообщение от xwicked Посмотреть сообщение
Пошарься по папке с Qt, там должны быть библиотеки типа QtCore.dll и QtCored.dll.
Посмотрел есть: QtCored4.dll

Цитата:
Сообщение от xwicked Посмотреть сообщение
Потом проверь отладчик установлен у тебя или нет в "Инструментарии".
А как это проверить?

8Observer8 вне форума Ответить с цитированием
Старый 06.01.2013, 14:33   #10
xwicked
Участник клуба
 
Аватар для xwicked
 
Регистрация: 21.03.2010
Сообщений: 1,508
По умолчанию

Build & Run вкладка.
Google - лучший помощник программиста.
---
моя лаборатория | мой FaceBook
xwicked вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Диалоговое окно Antoshkaswimm Microsoft Office Excel 3 23.12.2012 23:01
Ввести два вещественных числа, найти частное от деления первого на второе и вывести его с тремя Томат Помощь студентам 1 23.04.2012 23:23
Не создаётся окно в GLFW. Почему? anyx Gamedev - cоздание игр: Unity, OpenGL, DirectX 0 28.01.2011 11:51
Диалоговое окно Михаил Юрьевич Общие вопросы Delphi 11 01.06.2009 20:31