QWidgetクラス に基づいてQtで音楽プレーヤーのプロジェクトを作成し、widget.uiフォームを使用します。myClassがこのスコープで宣言されていません
同じテキストの2つのラベルを追加しないようにしたいので、フィールドを追加しようとしています:QList labelsList;私のwidget.hファイルの (labelList.append(label)よりもユーザーがラベルを追加するたびに、ラベルプログラムを追加できるようになる前に、labelsListを繰り返し実行し、リスト内に腹腔内テキストがあるかどうかを確認してください)。
"myqlabel.h"が含まれていますが、コンパイラによると、 'myQLabel'はこのスコープ内で宣言されていません...理由はわかりません。私にとっては奇妙なものですが、基本的な知識が欠けている/忘れているかもしれません.../
ありがとうございました!
コード(ちょうど必要な断片)以下:
widget.hファイル:
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include "myqlabel.h"
#include <QList>
#include <QFormLayout>
#include <QSqlDatabase>
#include <QtSql>
#include <QMediaPlayer>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
// to check if label with input text already exists:
// HERE OUR BAD FIELD:
QList<myQLabel*> labelsList;
private:
Ui::Widget *ui;
QMediaPlayer player;
qint64 duration;
};
#endif // WIDGET_H
myqlabel.hファイル:
#ifndef MYQLABEL_H
#define MYQLABEL_H
#include <QLabel>
#include "widget.h"
#include "ui_widget.h"
#include <QFormLayout>
#include <QMouseEvent>
class myQLabel : public QLabel {
Q_OBJECT
public:
myQLabel(QString& text, QFormLayout* parent = 0) : QLabel(text){
setAcceptDrops(true);
position = amount;
this->parent = parent;
labelsList.append(this);
}
};
#endif // MYQLABEL_H
コーディングスタイルに関する注意:Qtコードでは、大文字でクラス名を開始するのが普通です。ここでクラス名として 'MyQLabel'を使用することを検討してください。 – hyde
ああ、ありがとう:)私の悪い...私はそれを組み込みのクラスと区別しようとしましたが、私たちはルールに従うべきです。 – WJuz