C:/Users/JJLIAO/Documents/t1/mainwindow.cpp:12: error: cannot convert 'Phonon::SeekSlider*' to 'ADM_QSlider*' in assignment
指的是這行 slider=ui->horizontalSlider; 有問題
請問如何才能解決這個問題~~
mainwindow.cpp #include "mainwindow.h"
#include "ui_mainwindow.h"
static ADM_QSlider *slider=NULL;
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
slider=ui->horizontalSlider;
slider->setMinimum(0);
slider->setMaximum(1000000000);
slider->setPageStep(10000000);
media = new Phonon::MediaObject;
vwidget = new Phonon::VideoWidget;
Phonon::createPath(media, vwidget);
vwidget->setAspectRatio(Phonon::VideoWidget::AspectRatioAuto);
aOutput = new Phonon::AudioOutput(Phonon::VideoCategory);
Phonon::createPath(media, aOutput);
volumeSlider = new Phonon::VolumeSlider;
volumeSlider->setAudioOutput(aOutput);
volumeSlider->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum);
ui->gridLayout->addWidget(vwidget);
ui->horizontalSlider->setMediaObject(media);
ui->horizontalLayout->addWidget(volumeSlider);
}
mainwindow.h #include <QMainWindow>
#include <QFileDialog>
#include <Phonon>
#include "ADM_qslider.h"
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow {
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
protected:
void changeEvent(QEvent *e);
private:
Ui::MainWindow *ui;
Phonon::MediaObject *media;
Phonon::VideoWidget *vwidget;
Phonon::AudioOutput *aOutput;
Phonon::VolumeSlider *volumeSlider;
private slots:
void on_stop_clicked();
void on_pause_clicked();
void on_play_clicked();
void on_open_clicked();
};
ADM_qslider.cpp #include <QtGui/QPainter>
#include <QtGui/QSlider>
#include "ADM_qslider.h"
ADM_QSlider::ADM_QSlider(QWidget *parent) : QSlider(parent)
{
frameCount = markerA = markerB = 0;
}
void ADM_QSlider::paintEvent(QPaintEvent *event)
{
QSlider::paintEvent(event);
int a = markerA, b = markerB;
QColor color = Qt::blue;
if (markerA > markerB)
{
b = markerA;
a = markerB;
color = Qt::red;
}
if (frameCount > 0 && (a != 0 || b != frameCount))
{
int left = (a * width()) / frameCount;
int right = (b * width()) / frameCount;
QPainter painter(this);
painter.setPen(color);
painter.drawRect(left, 1, right - left, height() - 3);
painter.end();
}
}
void ADM_QSlider::setMarkerA(uint32_t frameIndex)
{
setMarkers(frameIndex, markerB);
}
void ADM_QSlider::setMarkerB(uint32_t frameIndex)
{
setMarkers(markerA, frameIndex);
}
void ADM_QSlider::setMarkers(uint32_t frameIndexA, uint32_t frameIndexB)
{
if (frameIndexA > frameCount)
printf("[ADM_QSlider] Marker A is out of bounds (%u, %u)\n", markerA, frameCount);
else if (frameIndexB > frameCount)
printf("[ADM_QSlider] Marker B is out of bounds (%u, %u)\n", markerB, frameCount);
else
{
markerA = frameIndexA;
markerB = frameIndexB;
repaint();
}
}
void ADM_QSlider::setFrameCount(uint32_t count)
{
frameCount = count;
repaint();
}
//EOF
ADM_QSlider.h #include <QSlider>
class ADM_QSlider : public QSlider
{
protected:
uint32_t frameCount, markerA, markerB;
void paintEvent(QPaintEvent *event);
public:
ADM_QSlider(QWidget *parent = 0);
void setMarkerA(uint32_t frameIndex);
void setMarkerB(uint32_t frameIndex);
void setMarkers(uint32_t frameIndexA, uint32_t frameIndexB);
void setFrameCount(uint32_t count);
};
[ 此帖被tako761208在2010-05-10 00:07重新编辑 ]