[英]visual studio 2013 mysterious C2228 error
我最近將一些qt項目從2008年升級到2013年。我變得很奇怪
Error 1 error C2228: left of '.currentText' must have class/struct/union
我嘗試訪問gui中的組合框時出錯。
這是代碼,很簡單:
videopanel.h
#ifndef VIDEOPANEL_H
#define VIDEOPANEL_H
#include <QCamera>
#include <QtWidgets>
#include <QMediaRecorder>
#include <QCameraImageCapture>
#include <QCameraViewFinder>
#include <QVideoWidget>
namespace Ui {
class videoPanel;
}
class videoPanel : public QWidget
{
Q_OBJECT
public:
explicit videoPanel(QWidget *parent = 0);
~videoPanel();
private slots:
void monitorToggle(int state);
private:
Ui::videoPanel *ui;
QCamera *camera;
QList<QCameraInfo> cameraInfos;
QCameraImageCapture *imageCapture;
QMediaRecorder* mediaRecorder;
QImageEncoderSettings imageSettings;
QAudioEncoderSettings audioSettings;
QVideoEncoderSettings videoSettings;
QString videoContainerFormat;
bool isCapturingVideo;
void setCamera(void);
};
#endif // VIDEOPANEL_H
這是cpp:videopanel.cpp
#include "videopanel.h"
#include "ui_videopanel.h"
#include <QMediaService>
#include <QMediaRecorder>
#include <QCameraViewfinder>
#include <QCameraInfo>
#include <QMediaMetaData>
#include <iostream>
videoPanel::videoPanel(QWidget *parent) :
QWidget(parent),
ui(new Ui::videoPanel),
camera(0),
imageCapture(0),
mediaRecorder(0)
{
ui->setupUi(this); // fine!!!
QObject::connect(ui->monitorCheck, SIGNAL(stateChanged(int)), this, SLOT(monitorToggle(int)) );
// Camera devices:
cameraInfos = QCameraInfo::availableCameras();
// display device descriptions in combo box
for (QList<QCameraInfo>::Iterator it = cameraInfos.begin();
it != cameraInfos.end(); ++it)
ui->cameraBox->addItem(it->description()); // fine!!!
}
videoPanel::~videoPanel()
{
delete mediaRecorder;
delete imageCapture;
delete camera;
}
void videoPanel::setCamera(void) {
delete imageCapture;
delete mediaRecorder;
delete camera;
for (QList<QCameraInfo>::Iterator it = cameraInfos.begin();
it != cameraInfos.end(); ++it)
if (!it->description().compare(ui->cameraBox.currentText())) // not fine!!!
camera = new QCamera(*it);
}
void videoPanel::monitorToggle(int state) {
if (state == Qt::CheckState::Checked);
std::cout << ui->cameraBox.currentText() << std::endl; // not fine!!!
}
我上面引用的錯誤來自第51和第60行,我嘗試訪問ui
。
所以在構造函數中,編譯器可以使用變量ui
,但不能在其他方法中使用。 這是很好的鍋爐板qt的東西,所以我不確定是什么問題,但是,我懷疑VS中有一些標志,它以某種方式模糊了我的ui
變量的范圍。 我所有其他私有變量都沒問題,所以我不知道是什么問題。
我確信uic/moc
進程正常工作,我嘗試過清理和重建無濟於事。
替換行:
if (!it->description().compare(ui->cameraBox.currentText()))
std::cout << ui->cameraBox.currentText() << std::endl;
通過:
if (!it->description().compare(ui->cameraBox->currentText()))
std::cout << ui->cameraBox->currentText() << std::endl;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.