質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Qt

QtはGUIプログラムの開発で広く使われているクロスプラットフォーム開発のフレームワークです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Qt Creator

Qt Creatorは、Qtアプリケーションを開発するための開発統合環境(IDE)です。

Q&A

解決済

1回答

4719閲覧

C2512、C2027エラーについて

wabisuke2718

総合スコア96

Qt

QtはGUIプログラムの開発で広く使われているクロスプラットフォーム開発のフレームワークです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Qt Creator

Qt Creatorは、Qtアプリケーションを開発するための開発統合環境(IDE)です。

0グッド

0クリップ

投稿2017/04/23 10:16

Qt Creatorでコードを書いているのですが、以下のコードで次のようなエラーが出ます。
Mastering Qt5という本のサンプルを丸写ししていて、異なる部分も無いのですが、エラーが出ます。
ご教授お願いします。

C:\Users\Yuki\Documents\Qt\Chapter_03\gallery-desktop\albumlistwidget.cpp:10: エラー: C2512: 'Ui::AlbumListWidget' : クラス、構造体、共用体に既定のコンストラクターがありません。 C:\Users\Yuki\Documents\Qt\Chapter_03\gallery-desktop\albumlistwidget.cpp:13: エラー: C2027: 認識できない型 'Ui::AlbumListWidget' が使われています。

albumlistwidget.h

C++

1#ifndef ALBUMLISTWIDGET_H 2#define ALBUMLISTWIDGET_H 3 4#include <QWidget> 5#include <QItemSelectionModel> 6 7namespace Ui { 8 class AlbumListWidget; 9} 10 11class AlbumModel; 12 13class AlbumListWidget : public QWidget 14{ 15 Q_OBJECT 16public: 17 explicit AlbumListWidget(QWidget *parent = 0); 18 ~AlbumListWidget(); 19 20 void setModel(AlbumModel* model); 21 void setSelectionModel(QItemSelectionModel* selectionModel); 22 23private slots: 24 void createAlbum(); 25 26private: 27 Ui::AlbumListWidget* ui; 28 AlbumModel* mAlbumModel; 29 30signals: 31 32public slots: 33}; 34 35#endif // ALBUMLISTWIDGET_H 36

albumlistwidget.cpp

C++

1#include "albumlistwidget.h" 2#include "ui_albumlistwidget.h" 3 4#include <QInputDialog> 5 6#include "AlbumModel.h" 7 8AlbumListWidget::AlbumListWidget(QWidget *parent) : 9 QWidget(parent), 10 ui(new Ui::AlbumListWidget), 11 mAlbumModel(nullptr) 12{ 13 ui->setupUi(this); 14 15 connect(ui->createAlbumButton, &QPushButton::clicked, this, &AlbumListWidget::createAlbum); 16} 17 18AlbumListWidget::~AlbumListWidget() 19{ 20 delete ui; 21} 22 23void AlbumListWidget::setModel(AlbumModel *model) 24{ 25 mAlbumModel = model; 26 ui->albumList->setModel(mAlbumModel); 27} 28 29void AlbumListWidget::setSelectionModel(QItemSelectionModel *selectionModel) 30{ 31 ui->albumList->setSelectionModel(selectionModel); 32} 33 34void AlbumListWidget::createAlbum() 35{ 36 if (!mAlbumModel) { 37 return; 38 } 39 40 bool ok; 41 QString albumName = QInputDialog::getText(this, 42 "Create a new Album", 43 "Choose an name", 44 QLineEdit::Normal, 45 "New album", 46 &ok); 47 48 if (ok && !albumName.isEmpty()) { 49 Album album(albumName); 50 QModelIndex createdIndex = mAlbumModel->addAlbum(album); 51 52 ui->albumList->setCurrentIndex(createdIndex); 53 } 54} 55

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

こんにちは。

単純にUi::AlbumListWidgetクラスの定義がないからと思います。
albumlistwidget.hで定義しているAlbumListWidgetはグローバル名前空間で定義していますから、Ui::AlbumListWidgetとは別のクラスです。

Ui::AlbumListWidgetクラスが定義されているヘッダをインクルードされて下さい。


しかし、同じ名前のクラスを別名前空間に定義するのは混乱の元ですから、あまりやらない方がよいように思います。

投稿2017/04/23 10:29

Chironian

総合スコア23272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問