Tak, zgodnie z logiką ta komenda musi być najpierw, bo inaczej nie zaalokuje pamięci na te obiekty. Najpierw wszedłem do katalogu z projektem i wrzuciłem profilaktycznie make clean.
Komunikaty po wykonaniu CTRL+SHIFT+B, czyli zbuduj wszystko w QtCreator.
Uruchamianie kroków budowania dla projektu AddressBook...
Konfiguracja nie została zmieniona, opuszczono krok QMake.
Uruchamianie: /usr/bin/make -w
make: Wejście do katalogu `/home/margor/AddressBook'
g++ -c -pipe -g -Wall -W -D_REENTRANT -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/QtCore -I/usr/include/QtGui -I/usr/include -I. -I. -o addressbook.o addressbook.cpp
addressbook.cpp: In constructor ‘AddressBook::AddressBook(QWidget*)’:
addressbook.cpp:9:5: error: ‘nameLine’ was not declared in this scope
addressbook.cpp:10:5: error: ‘addressEdit’ was not declared in this scope
make: Opuszczenie katalogu `/home/margor/AddressBook'
make: *** [addressbook.o] Błąd 1
Zakończono kodem wyjściowym 2.
Błąd podczas budowania projektu AddressBook
Podczas wykonywania kroku budowania "Make"
Pewnie zabrałem się za całość od złej strony. Teraz powinienem szukać howto jak zabrać się za projekt oparty o MainWindow.
Wrzucę na wszelki wypadek:
addressbook.h
#ifndef ADDRESSBOOK_H
#define ADDRESSBOOK_H
#include <QMainWindow>
#include <QMap> // for containter to store data
#include <QMessageBox>
#include "ui_addressbook.h"
namespace Ui {
class AddressBook;
}
class AddressBook : public QMainWindow {
Q_OBJECT
// defined values
QMap<QString, QString> contacts;
QString oldName;
QString oldAddress;
public:
AddressBook(QWidget *parent = 0);
~AddressBook();
protected:
void changeEvent(QEvent *e);
private:
Ui::AddressBook *ui;
private slots:
void addContact();
void submitContact();
void cancel();
};
#endif // ADDRESSBOOK_H
addressbook.cpp
#include "addressbook.h"
#include "ui_addressbook.h"
AddressBook::AddressBook(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::AddressBook)
{
nameLine->setReadOnly(true);
addressEdit->setReadOnly(true);
ui->setupUi(this);
}
AddressBook::~AddressBook()
{
delete ui;
}
void AddressBook::changeEvent(QEvent *e)
{
QMainWindow::changeEvent(e);
switch (e->type()) {
case QEvent::LanguageChange:
ui->retranslateUi(this);
break;
default:
break;
}
}
void AddressBook::addContact()
{
}
void AddressBook::submitContact()
{
}
void AddressBook::cancel()
{
}
main.cpp
#include <QtGui/QApplication>
#include "addressbook.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
AddressBook w;
w.show();
return a.exec();
}
ui_addressbook.h
/********************************************************************************
** Form generated from reading UI file 'addressbook.ui'
**
** Created
** by: Qt User Interface Compiler version 4.6.3
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
#ifndef UI_ADDRESSBOOK_H
#define UI_ADDRESSBOOK_H
#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QGridLayout>
#include <QtGui/QHeaderView>
#include <QtGui/QLabel>
#include <QtGui/QLineEdit>
#include <QtGui/QMainWindow>
#include <QtGui/QMenuBar>
#include <QtGui/QPushButton>
#include <QtGui/QStatusBar>
#include <QtGui/QTextEdit>
#include <QtGui/QToolBar>
#include <QtGui/QWidget>
QT_BEGIN_NAMESPACE
class Ui_AddressBook
{
public:
QWidget *centralWidget;
QWidget *widget;
QGridLayout *gridLayout;
QLabel *nameLabel;
QLineEdit *nameLine;
QLabel *addressLabel;
QTextEdit *addressEdit;
QWidget *widget1;
QGridLayout *gridLayout_2;
QPushButton *addButton;
QPushButton *submitButton;
QPushButton *cancelButton;
QMenuBar *menuBar;
QToolBar *mainToolBar;
QStatusBar *statusBar;
void setupUi(QMainWindow *AddressBook)
{
if (AddressBook->objectName().isEmpty())
AddressBook->setObjectName(QString::fromUtf8("AddressBook"));
AddressBook->resize(409, 344);
centralWidget = new QWidget(AddressBook);
centralWidget->setObjectName(QString::fromUtf8("centralWidget"));
widget = new QWidget(centralWidget);
widget->setObjectName(QString::fromUtf8("widget"));
widget->setGeometry(QRect(10, 0, 311, 222));
gridLayout = new QGridLayout(widget);
gridLayout->setSpacing(6);
gridLayout->setContentsMargins(11, 11, 11, 11);
gridLayout->setObjectName(QString::fromUtf8("gridLayout"));
gridLayout->setContentsMargins(0, 0, 0, 0);
nameLabel = new QLabel(widget);
nameLabel->setObjectName(QString::fromUtf8("nameLabel"));
gridLayout->addWidget(nameLabel, 0, 0, 1, 1);
nameLine = new QLineEdit(widget);
nameLine->setObjectName(QString::fromUtf8("nameLine"));
gridLayout->addWidget(nameLine, 0, 1, 1, 1);
addressLabel = new QLabel(widget);
addressLabel->setObjectName(QString::fromUtf8("addressLabel"));
gridLayout->addWidget(addressLabel, 1, 0, 1, 1);
addressEdit = new QTextEdit(widget);
addressEdit->setObjectName(QString::fromUtf8("addressEdit"));
gridLayout->addWidget(addressEdit, 1, 1, 1, 1);
widget1 = new QWidget(centralWidget);
widget1->setObjectName(QString::fromUtf8("widget1"));
widget1->setGeometry(QRect(330, 30, 73, 79));
gridLayout_2 = new QGridLayout(widget1);
gridLayout_2->setSpacing(6);
gridLayout_2->setContentsMargins(11, 11, 11, 11);
gridLayout_2->setObjectName(QString::fromUtf8("gridLayout_2"));
gridLayout_2->setContentsMargins(0, 0, 0, 0);
addButton = new QPushButton(widget1);
addButton->setObjectName(QString::fromUtf8("addButton"));
gridLayout_2->addWidget(addButton, 0, 0, 1, 1);
submitButton = new QPushButton(widget1);
submitButton->setObjectName(QString::fromUtf8("submitButton"));
gridLayout_2->addWidget(submitButton, 1, 0, 1, 1);
cancelButton = new QPushButton(widget1);
cancelButton->setObjectName(QString::fromUtf8("cancelButton"));
gridLayout_2->addWidget(cancelButton, 2, 0, 1, 1);
AddressBook->setCentralWidget(centralWidget);
menuBar = new QMenuBar(AddressBook);
menuBar->setObjectName(QString::fromUtf8("menuBar"));
menuBar->setGeometry(QRect(0, 0, 409, 20));
AddressBook->setMenuBar(menuBar);
mainToolBar = new QToolBar(AddressBook);
mainToolBar->setObjectName(QString::fromUtf8("mainToolBar"));
AddressBook->addToolBar(Qt::TopToolBarArea, mainToolBar);
statusBar = new QStatusBar(AddressBook);
statusBar->setObjectName(QString::fromUtf8("statusBar"));
AddressBook->setStatusBar(statusBar);
retranslateUi(AddressBook);
QMetaObject::connectSlotsByName(AddressBook);
} // setupUi
void retranslateUi(QMainWindow *AddressBook)
{
AddressBook->setWindowTitle(QApplication::translate("AddressBook", "AddressBook", 0, QApplication::UnicodeUTF8));
nameLabel->setText(QApplication::translate("AddressBook", "Name:", 0, QApplication::UnicodeUTF8));
addressLabel->setText(QApplication::translate("AddressBook", "Address:", 0, QApplication::UnicodeUTF8));
addButton->setText(QApplication::translate("AddressBook", "Add", 0, QApplication::UnicodeUTF8));
submitButton->setText(QApplication::translate("AddressBook", "Submit", 0, QApplication::UnicodeUTF8));
cancelButton->setText(QApplication::translate("AddressBook", "Cancel", 0, QApplication::UnicodeUTF8));
} // retranslateUi
};
namespace Ui {
class AddressBook: public Ui_AddressBook {};
} // namespace Ui
QT_END_NAMESPACE
#endif // UI_ADDRESSBOOK_H