首页 > 其他分享 >Qt - 音视频播放2

Qt - 音视频播放2

时间:2024-03-27 10:22:05浏览次数:40  
标签:const Qt int void QMediaPlayer 音视频 bool 播放

解码器下载链接:LAV filters

 

音视频播放

播放内存中的音乐

QFile read("./music/Nevada.mp3");
    if (!read.open(QIODevice::ReadOnly))
    {
        qDebug() << "文件打开失败,请重试~";
    }
    //下面用的对象,必须动态申请,不然构造函数执行完毕,局部变量内存会被释放
    QByteArray *data = new QByteArray(read.readAll());
    read.close();
​
    QBuffer *buffer = new QBuffer(data,this);
    if (!buffer->open(QIODevice::ReadWrite))
    {
        qDebug() << "buffer error";
    }
    //qDebug() << data;
    QMediaPlayer *player = new QMediaPlayer(this);
    player->setMedia(QMediaContent(),buffer);
    player->play();

播放内存中的视频

QMediaPlayer *player = new QMediaPlayer(this);
    player->setMedia(QUrl("./music/MMD.mp4"));
    player->play();
​
    QVideoWidget* videowidget = new QVideoWidget(this);
    player->setVideoOutput(videowidget);

vs中如果提示编译器堆空间不足,则打开vcxproj工程文件,在PropertyGroup中添加如下代码

<PropertyGroup Label="Globals">
    <!-- 资源文件加载,防止编译器堆空间不足 -->
     <PreferredToolArchitecture>x64</PreferredToolArchitecture> 
</PropertyGroup>

 

一、播放音频

在Qt中,要想使计算机发出响声,最简单的方法是调用QApplication : : beep()静态函数。而Qt Multimedia模块中提供了多个类来实现不同层次的音频输入,输出和处理。

QSound

QSound类提供了播放.wav声音文件的方法。

Qt 提供了 GUI 应用程序中最常用的音频操作:异步播放声音文件。 使用静态 play() 函数最容易做到这一点:

QSound::play("mysounds/bells.wav");

或者,首先从声音文件创建一个 QSound 对象,然后调用 play() 槽:

QSound bells("mysounds/bells.wav");
bells.play();

在这两种情况下,文件可能是本地文件或资源中的文件。

一旦创建了 QSound 对象,就可以查询它的 fileName() 和 loops() 总数(即声音播放的次数)。 可以使用 setLoops() 函数更改重复次数。 播放声音时,loopsRemaining() 函数返回剩余的重复次数。 使用 isFinished() 函数来确定声音是否播放完毕。

使用 QSound 对象播放的声音可能会比静态 play() 函数使用更多的内存,但它也可能播放得更快(取决于底层平台的音频设施)。

如果您需要更好地控制播放声音,请考虑 QSoundEffect 或 QAudioOutput 类。

Public Functions

QSound(const QString &filename, QObject *parent = nullptr)
virtual ~QSound()
QString fileName() const
bool isFinished() const
int loops() const
int loopsRemaining() const
void setLoops(int number)

Slots

void play()
void stop()

Static Public Members

void play(const QString &filename)

 

QSoundEffect

QSoundEffect类提供了一种播放低延迟声音效果的方法 。

这个类允许你以较低的延迟方式播放未压缩的音频文件(通常是WAV文件),并且适用于“反馈”类型的声音,以响应用户的动作(例如虚拟键盘声音,弹出对话框的正面或负面反馈,或游戏声音)。 如果低延迟不重要,可以考虑使用QMediaPlayer类,因为它支持更广泛的媒体格式,并且资源消耗更少。

看个例子:

QSoundEffect effect;
effect.setSource(QUrl::fromLocalFile("F:/MyCode/QtObjectCode/QtCourse/soundeffect/video_call.wav"));
effect.setLoopCount(QSoundEffect::Infinite);
effect.setVolume(0.8f);
effect.play();

通常应该重用音效,这样可以提前完成所有解析和准备工作,并且只在必要时触发。 这有助于降低延迟音频播放。

class MyGame
{
public:
  MyGame(): m_videoCall(this)
  {
      m_videoCall.setSource(QUrl::fromLocalFile("video_call.wav"));
      m_videoCall.setVolume(0.25f);
​
      // Set up click handling etc.
      connect(clickSource, &QPushButton::clicked, &m_videoCall, &QSoundEffect::play);
  }
private:
  QSoundEffect m_videoCall;
}

由于QSoundEffect需要更多的资源来实现较低的延迟播放,平台可能会限制同时播放声音效果的数量。

Public Functions

  • 设置

//设置源(wav文件路径)
void setSource(const QUrl &url)
//设置循环次数  
void setLoopCount(int loopCount)
//设置静音
void setMuted(bool muted)
//设置音量0~1之间
void setVolume(qreal volume)
  • 判断

//音效是否加载完毕
bool isLoaded() const
//是否是静音    
bool isMuted() const
//是否正在播放    
bool isPlaying() const

Slots

void play() //播放
void stop() //停止

Signals

void categoryChanged()
void loadedChanged()
void loopCountChanged()
void loopsRemainingChanged()
void mutedChanged()
void playingChanged()
void sourceChanged()
void statusChanged()
void volumeChanged()

枚举

QSoundEffect::Status
枚举 描述
QSoundEffect::Null 未设置源或源为空。
QSoundEffect::Loading SoundEffect 正在尝试加载源。
QSoundEffect::Ready 源已加载并准备好播放。
QSoundEffect::Error 运行过程中出现错误,例如加载源失败。

 

QMediaPlayer

QMediaPlayer类是一个高级媒体播放类。 它可以用来播放歌曲、电影和网络广播等内容。 要播放的内容被指定为QMediaContent对象,可以将其视为附加了附加信息的主要或规范URL。 当提供QMediaContent时,可以开始播放。

QMediaPlayer player;
player.setMedia(QUrl::fromLocalFile("F:/MyCode/QtObjectCode/QtCourse/soundeffect/That-Girl.mp3"));
player.setVolume(50);
player.play();

QVideoWidget可以与QMediaPlayer一起用于视频渲染,QMediaPlaylist用于访问播放列表功能。

QVideoWidget wid;
wid.show();
​
QMediaPlaylist playList;
playList.addMedia(QUrl::fromLocalFile("F:/MyCode/QtObjectCode/QtCourse/soundeffect/That-Girl.mp3"));
playList.addMedia(QUrl::fromLocalFile("F:/MyCode/QtObjectCode/QtCourse/soundeffect/干坤坤.mp4"));
​
QMediaPlayer player;
player.setPlaylist(&playList);
//player.setMedia(QUrl::fromLocalFile("F:/MyCode/QtObjectCode/QtCourse/soundeffect/That-Girl.mp3"));
player.setVolume(50);
playList.next();
player.setVideoOutput(&wid);
player.play();

Public Functions

//该值是当前媒体的总播放时间,以毫秒为单位。 该值可能在QMediaPlayer对象的生命周期中发生变化,并且可能在初始回放开始时不可用,请连接到durationChanged()信号来接收状态通知。  
qint64 duration() const
//将QVideoWidget视频输出附加到媒体播放器。  
void setVideoOutput(QVideoWidget *output)
void setVideoOutput(QGraphicsVideoItem *output)
void setVideoOutput(QAbstractVideoSurface *surface)

Public Slots

//暂停播放当前源
void pause()    
//开始或恢复播放当前源    
void play()
//设置当前媒体源。 使用mediaStatusChanged()和error()信号,以便在加载媒体和加载过程中发生错误时得到通知      
void setMedia(const QMediaContent &media, QIODevice *stream = nullptr)
//设置静音    
void setMuted(bool muted)
//设置倍速播放
void setPlaybackRate(qreal rate)
//设置播放列表    
void setPlaylist(QMediaPlaylist *playlist)
//设置播放位置,以媒体开始后的毫秒数为单位。 位置的周期性变化将用信号positionChanged()表示,更新间隔可以用QMediaObject的方法setNotifyInterval()设置。    
void setPosition(qint64 position)
//此属性保存当前播放音量。  播放音量是线性缩放的,从0(静音)到100(全音量)。默认为100      
void setVolume(int volume)
//停止播放,并将播放位置重置到开始    
void stop()

Signals

//表示当前播放内容已更改为media。  
void currentMediaChanged(const QMediaContent &media)
//表示内容的持续时间已更改为持续时间,以毫秒表示。  
void durationChanged(qint64 duration)    
//产生了错误
void error(QMediaPlayer::Error error)
//表示媒体来源已转变为media。      
void mediaChanged(const QMediaContent &media)
//表示当前媒体的状态已经改变    
void mediaStatusChanged(QMediaPlayer::MediaStatus status)
//静音状态改变  
void mutedChanged(bool muted)
//播放速率改变
void playbackRateChanged(qreal rate)
//播放位置改变    
void positionChanged(qint64 position)
//表示播放器对象的状态已经改变。  
void stateChanged(QMediaPlayer::State state)
//音量改变
void volumeChanged(int volume)

枚举

(enum QMediaPlayer::Error)媒体播放器产生的具体错误。

枚举 描述
MediaPlayer::NoError 没有错误发生
QMediaPlayer::ResourceError 无法解析媒体源
QMediaPlayer::FormatError 媒体资源的格式不受(完全)支持。 重新播放是可能的,但没有音频或视频组件。
QMediaPlayer::NetworkError 网络错误
QMediaPlayer::AccessDeniedError 没有播放媒体资源的适当权限。
QMediaPlayer::ServiceMissingError 找不到有效的播放服务,无法继续播放。

(enum QMediaPlayer::Flag)播放标志。

枚举 描述
QMediaPlayer::LowLatency 该播放器预计将用于简单的音频格式,播放没有明显的延迟。 这种回放服务可以用于蜂鸣声、铃声等。
QMediaPlayer::StreamPlayback 该播放器预计将播放基于QIODevice的流。 如果传递给QMediaPlayer构造器,将选择支持流回放的服务。
QMediaPlayer::VideoSurface 期望播放器能够呈现为QAbstractVideoSurface输出。

(enum QMediaPlayer::MediaStatus)定义媒体播放器当前媒体的状态。

枚举 描述
QMediaPlayer::UnknownMediaStatus 无法确定媒体的状态。
QMediaPlayer::NoMedia 没有当前的媒体。 播放器处于停止状态。
QMediaPlayer::LoadingMedia 当前媒体正在加载中。 播放器可能处于任何状态。
QMediaPlayer::LoadedMedia 已加载当前媒体。 播放器处于停止状态。
QMediaPlayer::StalledMedia 由于缓冲不足或其他一些临时中断,当前媒体的播放已停止。 播放器处于PlayingState或PausedState
QMediaPlayer::BufferingMedia 播放器正在缓冲数据,但缓冲了足够的数据以供播放。 播放器处于PlayingState或PausedState。
QMediaPlayer::BufferedMedia 播放器已经完全缓冲了当前的媒体。 播放器处于PlayingState或PausedState。
QMediaPlayer::EndOfMedia 播放已经结束。 播放器处于停止状态。
QMediaPlayer::InvalidMedia 当前媒体无法播放。 播放器处于停止状态。

(enum QMediaPlayer::State)媒体播放器的当前状态。

枚举 描述
QMediaPlayer::StoppedState 播放停止状态
QMediaPlayer::PlayingState 播放进行状态
QMediaPlayer::PausedState 播放暂停状态

QMediaPlaylist

QMediaPlaylist类提供了要播放的媒体内容列表。

QMediaPlaylist旨在与其他媒体对象一起使用,如QMediaPlayer。

QMediaPlaylist允许访问服务固有的播放列表功能(如果可用的话),否则它提供本地内存播放列表实现。

playlist = new QMediaPlaylist;
  playlist->addMedia(QUrl("http://example.com/movie1.mp4"));
  playlist->addMedia(QUrl("http://example.com/movie2.mp4"));
  playlist->addMedia(QUrl("http://example.com/movie3.mp4"));
  playlist->setCurrentIndex(1);
​
  player = new QMediaPlayer;
  player->setPlaylist(playlist);
​
  videoWidget = new QVideoWidget;
  player->setVideoOutput(videoWidget);
  videoWidget->show();
​
  player->play();

根据播放列表源代码的实现,大多数播放列表更改操作可以是异步的。

Public Functions

  • 构造与析构

QMediaPlaylist(QObject *parent = nullptr)
virtual ~QMediaPlaylist()
  • 添加/移除/清空媒体

bool addMedia(const QMediaContent &content)
bool addMedia(const QList<QMediaContent> &items)
    
bool insertMedia(int pos, const QMediaContent &content)
bool insertMedia(int pos, const QList<QMediaContent> &items)    
    
bool removeMedia(int pos)
bool removeMedia(int start, int end)
​
bool clear()
  • 保存/加载播放列表

bool save(const QUrl &location, const char *format = nullptr)
bool save(QIODevice *device, const char *format)
​
void load(const QNetworkRequest &request, const char *format = nullptr)
void load(const QUrl &location, const char *format = nullptr)
void load(QIODevice *device, const char *format = nullptr)
  • 获取播放内容

int currentIndex() const
QMediaContent currentMedia() const
​
QMediaContent media(int index) const
int nextIndex(int steps = 1) const 
int previousIndex(int steps = 1) const
    
int mediaCount() const
  • 操作播放列表

bool moveMedia(int from, int to)
void setPlaybackMode(QMediaPlaylist::PlaybackMode mode)
  • 其他

QMediaPlaylist::Error error() const
QString errorString() const
    
bool isEmpty() const
bool isReadOnly() const

 

slots

void next()
void previous()
void setCurrentIndex(int playlistPosition)
void shuffle()

 

signals

void currentIndexChanged(int position)
void currentMediaChanged(const QMediaContent &content)
void loadFailed()
void loaded()
void mediaAboutToBeInserted(int start, int end)
void mediaAboutToBeRemoved(int start, int end)
void mediaChanged(int start, int end)
void mediaInserted(int start, int end)
void mediaRemoved(int start, int end)
void playbackModeChanged(QMediaPlaylist::PlaybackMode mode)

 

枚举

(enum QMediaPlaylist::Error)QMediaPlaylist错误码。

枚举 描述
QMediaPlaylist::NoError 没有错误
QMediaPlaylist::FormatError 格式错误
QMediaPlaylist::FormatNotSupportedError 格式不支持
QMediaPlaylist::NetworkError 网络错误
QMediaPlaylist::AccessDeniedError 访问错误(拒绝访问)

(enum QMediaPlaylist::PlaybackMode)描述了播放列表中的播放顺序。

枚举 描述
QMediaPlaylist::CurrentItemOnce 单曲播放一次
QMediaPlaylist::CurrentItemInLoop 单曲循环
QMediaPlaylist::Sequential 顺序播放(列表播放完结束)
QMediaPlaylist::Loop 列表循环(列表播放完,从头开始继续播放)
QMediaPlaylist::Random 随机播放

QMediaContent

QMediaContent类提供对与媒体内容相关的资源的访问。

QMediaContent在多媒体框架内用作媒体内容的逻辑句柄。 一个QMediaContent对象包含一个QNetworkRequest,它提供了内容的URL。

非空QMediaContent将始终具有对通过request()方法可用的内容的引用。

另外,QMediaContent可以表示播放列表,并包含指向有效QMediaPlaylist对象的指针。 在这种情况下URL是可选的,可以是空的,也可以指向播放列表的URL。

Public Functions

QMediaContent(QMediaPlaylist *playlist, const QUrl &contentUrl = QUrl(), bool takeOwnership = false)
QMediaContent(const QMediaContent &other)
QMediaContent(const QNetworkRequest &request)
QMediaContent(const QUrl &url)
QMediaContent()
QMediaContent &operator=(const QMediaContent &other)
~QMediaContent()
bool isNull() const
QMediaPlaylist *playlist() const
QNetworkRequest request() const
bool operator!=(const QMediaContent &other) const
bool operator==(const QMediaContent &other) const

 

二、视频播放

首先在pro文件中添加相关模块

QT+= core gui
QT+= multimedia      #使用多媒体模块
QT+= multimediawidgets #使用QVideoWidget视频显示组件

QMediaPlayer

QMediaPlayer类可用来播放视频,只不过需要搭配专门的视频显示控件来使用。

  • 针对视频播放的函数

void setVideoOutput(QVideoWidget *output)
void setVideoOutput(QGraphicsVideoItem *output)
    
//当前媒体的视频是否可用,如果可用,可以使用QVideoWidget类来查看视频。
bool isVideoAvailable() const

Public Functions

QAudio::Role audioRole() const//此属性保存媒体播放器播放的音频流的角色。可以设置它来指定播放的音频类型,允许系统在音量、路由或后处理方面做出适当的决定。
int bufferStatus() const//此属性保存在播放开始或恢复之前已填充的临时缓冲区的百分比,从0(空)到100(满)。
QMediaContent currentMedia() const//该属性保存播放器对象正在播放的当前活动媒体内容。如果使用播放列表,此值可能与QMediaPlayer::media属性不同。在这种情况下,currentMedia表示播放器正在处理的当前媒体内容,而QMediaPlayer::media属性包含原始播放列表。
QNetworkConfiguration currentNetworkConfiguration() const//返回当前正在使用的网络接入点。如果返回默认构造的QNetworkConfiguration,则此功能不可用或当前提供的配置都未使用。
QString customAudioRole() const//此属性保存媒体播放器播放的音频流的角色。当后端支持Qt未知的音频角色时,可以设置它来指定播放的音频类型,指定角色可以让系统在音量、路由或后处理方面做出适当的决定。
qint64 duration() const//此属性保存当前媒体的持续时间。
QMediaPlayer::Error error() const//返回当前错误状态。
QString errorString() const//此属性保存描述最后一个错误条件的字符串。
bool isAudioAvailable() const//此属性保存当前媒体的音频可用性状态。
bool isMuted() const//此属性保存当前媒体的静音状态。如果播放音量为静音,该值将为true;否则false。
bool isSeekable() const//此属性保存当前媒体的可查找状态
bool isVideoAvailable() const//此属性保存当前媒体的视频可用性状态。
QMediaContent media() const//这个属性保存播放器对象正在使用的活动媒体源。播放器对象将使用QMediaContent来选择要播放的内容。
QMediaPlayer::MediaStatus mediaStatus() const//此属性保存当前媒体流的状态。流状态描述当前流的回放是如何进行的。默认情况下,这个属性是QMediaPlayer::NoMedia
const QIODevice *mediaStream() const//返回媒体数据的流源。这只在流被传递给setMedia()时有效。
qreal playbackRate() const//此属性保存当前媒体的播放速率。
QMediaPlaylist *playlist() const//这个属性保存播放器对象正在使用的媒体播放列表。
qint64 position() const//此属性保存当前媒体的播放位置。
void setAudioRole(QAudio::Role audioRole)//此属性保存媒体播放器播放的音频流的角色。
void setCustomAudioRole(const QString &audioRole)//此属性保存媒体播放器播放的音频流的角色。
void setVideoOutput(QVideoWidget *output)//将QVideoWidget视频输出附加到媒体播放器。如果媒体播放器已经附加了视频输出,它将被替换为一个新的。
void setVideoOutput(QGraphicsVideoItem *output)//将QGraphicsVideoltem视频输出附加到媒体播放器。如果媒体播放器已经附加了视频输出,将被替换为新的。
void setVideoOutput(QAbstractVideoSurface *surface)//将视频表面设置为媒体播放器的视频输出。如果媒体播放器上已经设置了视频输出,则新表面将替换它。
QMediaPlayer::State state() const//此属性保存媒体播放器的播放状态。默认情况下,这个属性是QMediaPlayer::Stopped
QList<QAudio::Role> supportedAudioRoles() const//返回支持的音频角色列表。如果不支持设置音频角色,则返回空列表。
QStringList supportedCustomAudioRoles() const//返回支持的自定义音频角色列表。空列表可能表明不知道支持的自定义音频角色。该列表可能不完整。
int volume() const//此属性保存当前播放音量。

Slots

void pause()//暂停播放当前源。
void play()//开始或继续播放当前源。
void setMedia(const QMediaContent &media, QIODevice *stream = nullptr)//设置当前媒体源。
void setMuted(bool muted)//此属性保存当前媒体的静音状态。如果播放音量为静音,该值将为true;否则false。
void setNetworkConfigurations(const QList<QNetworkConfiguration> &configurations)//设置用于远程媒体播放的网络接入点。Configurations按优先顺序升序包含可用于网络访问的配置列表。这将使以前的配置选择无效。
void setPlaybackRate(qreal rate)//此属性保存当前媒体的播放速率。
void setPlaylist(QMediaPlaylist *playlist)//这个属性保存播放器对象正在使用的媒体播放列表。播放器对象将使用当前播放列表项来选择要播放的内容。
void setPosition(qint64 position)//此属性保存当前媒体的播放位置。
void setVolume(int volume)//此属性保存当前播放音量。播放音量是线性缩放的,范围从0(静音)到100(满音量)。超出此范围的值将被箝位。
void stop()//停止播放,并将播放位置重置到开始位置。

Signals

void audioAvailableChanged(bool available)
void audioRoleChanged(QAudio::Role role)
void bufferStatusChanged(int percentFilled)
void currentMediaChanged(const QMediaContent &media)
void customAudioRoleChanged(const QString &role)
void durationChanged(qint64 duration)
void error(QMediaPlayer::Error error)
void mediaChanged(const QMediaContent &media)
void mediaStatusChanged(QMediaPlayer::MediaStatus status)
void mutedChanged(bool muted)
void networkConfigurationChanged(const QNetworkConfiguration &configuration)
void playbackRateChanged(qreal rate)
void positionChanged(qint64 position)
void seekableChanged(bool seekable)
void stateChanged(QMediaPlayer::State state)
void videoAvailableChanged(bool videoAvailable)
void volumeChanged(int volume)

 

QVideoWidget

  • 需包含模块multimediawidgets

QVideoWidget类提供了一个小部件,用于呈现由媒体对象生成的视频。

将 QVideoWidget 附加到 QMediaObject 允许它显示该媒体对象的视频或图像输出。 QVideoWidget 通过在其构造函数中传递指向 QMediaObject 的指针附加到媒体对象,并通过销毁 QVideoWidget 来分离。

player = new QMediaPlayer;//媒体播放器类
playlist = new QMediaPlaylist(player);
playlist->addMedia(QUrl("http://example.com/myclip1.mp4"));
playlist->addMedia(QUrl("http://example.com/myclip2.mp4"));

videoWidget = new QVideoWidget;//视频显示组件
player->setVideoOutput(videoWidget);//视频输出:设置视频输出,允许用户将视频渲染到自定义的视频输出设备上。
videoWidget->show();
playlist->setCurrentIndex(1);
player->play();

注意:一次只能将一个显示输出附加到媒体对象。

Public Functions

QVideoWidget(QWidget *parent = nullptr)
virtual ~QVideoWidget()
    
Qt::AspectRatioMode aspectRatioMode() const//视频如何根据其宽高比进行缩放。
int brightness() const      //亮度
int contrast() const        //对比度
int hue() const             //色调
bool isFullScreen() const   //是否全屏
int saturation() const      //饱和度

Slots

//设置视频缩放时,宽度和高度的变化模式
void setAspectRatioMode(Qt::AspectRatioMode mode)
//调整显示视频的亮度。有效亮度值范围在 -100 到 100 之间,默认值为 0。    
void setBrightness(int brightness)
//调整显示的视频的对比度。有效对比度值范围在-100到100之间,默认值为0。     
void setContrast(int contrast)
//调整显示视频的色调。有效的色调值范围在 -100 到 100 之间,默认值为 0。    
void setHue(int hue)
//调整显示视频的饱和度。 有效的饱和度值范围在-100到100之间,默认值是0。
void setSaturation(int saturation)    
//设置窗口全屏显示    
void setFullScreen(bool fullScreen)

Signals

//亮度改变
void brightnessChanged(int brightness)
//对比度改变    
void contrastChanged(int contrast)
//是否全屏状态改变    
void fullScreenChanged(bool fullScreen)
//饱和度改变    
void saturationChanged(int saturation)
//色调改变    
void hueChanged(int hue)

参考链接:https://www.cnblogs.com/lxuechao/p/12677357.html

 

标签:const,Qt,int,void,QMediaPlayer,音视频,bool,播放
From: https://www.cnblogs.com/zhuchunlin/p/18098346

相关文章

  • VS、Qt编译遇到的错误
    ---1、404  NOTFOUND  downloading'http://mitk.org/download/thirdparty/DCMQI.tar.gz'failed       camke中的ep路径没有配置好---2、C4996'strcpy':Thisfunctionorvariablemaybeunsafe.Considerusingstrcpy_sinstead.Todisabledepre......
  • Linux Mint下Qt Creator无法输入中文解决办法
    ubuntu下有对应的fcitx-frontend-qt6软件包,直接安装就能解决问题。但是linuxmint只有基于qt5的,目前使用Qtonlineinstaller安装的QtCreator是基于Qt6.6编译的所以,只能自己编译对应的fcitx-frontend-qt6动态库,然后放到对应目录下首先下载对应的源码gitclonehttps://github......
  • Ubuntu 无法播放MP4
    今天用ubuntu打开mp4发现无法播放,然后我以为文件损坏了,就传到手机上面,发现还是可以播放的,然后就查了一下相关资料,发现有人让我安装这个 sudosnapinstallffmpeg 安装了,发现还是不行,然后就找了另外一个方法又安装了一个播放器mpv就解决了。 sudoapt installmpv 然后找......
  • 【问题处理】cannot register qt5vs vs2010 help
    问题描述:安装qt-vs-addin-1.2.4-opensource时,在安装过程中弹出错误窗口,错误信息为cannotregisterqt5vsvs2010help;安装完成后,打开VS2010无法使用插件。解决方案:Window10搜索cmd并使用管理员身份运行,随后输入如下命令"C:\ProgramFiles(x86)\MicrosoftSDKs\Windows\v7......
  • qt_Opencv (学习笔记) - 隐身术
    我们前面一起学习了Opencv库中的一些函数并且做了一个小练习,想必大家对Opencv库有了一定的了解。接下来让我来带着大家来完成今天的小项目吧!有了前面几个文章的基础,我们接下来来实现“隐身术”就比较简单了。先让我来展示一下隐身术的效果吧!我们想要实习隐身术,首先我们......
  • Qt QTcpSocket 对连接服务器中断的不同情况进行判定
    简述对于一个C/S结构的程序,客户端有些时候需要实时得知与服务器的连接状态。而对于客户端与服务器断开连接的因素很多,现在就目前遇到的情况进行一下总结。分为下面六种不同情况   客户端网线断开   客户端网络断开   客户端通过HTTP代理连接服务器,代理机器断开代......
  • Qt 检查int某一位数据是否为1
    1#include<QCoreApplication>2#include<QString>34intmain(intargc,char*argv[])5{6QCoreApplicationa(argc,argv);78intnumber=123;//例子中的整数910//将整数转换为16进制字符串11QStringhexString=QString::n......
  • 初学可视化PyQt5
    【初学可视化PyQt5系列】第1章PyQt5简介第2章PyQt5新增功能第3章Hellomyfourrotordrone第4章PyQt5主要类第5章PyQt5使用Qt设计器第6章PyQt5信号与插槽第7章PyQt5布局与管理第8章PyQt5基本小部件第9章PyQt5QDialog类第10章PyQt5QMessageBox......
  • 【QT+QGIS跨平台编译】之九十一:【QGIS_Python跨平台编译】—【qgis_python.h生成】
    文章目录一、qgis_python.h介绍二、信息分析三、qgis_python.h生成一、qgis_python.h介绍  qgis_python.h是QGIS(QuantumGIS)软件中的一个头文件,主要用于服务于QGIS_Python库的编译,包含导入、导出宏信息的定义。二、信息分析在qgis\src\python目录,CMakeLis......
  • QtableWidget 表头增加复选框简单实现方法
    1.最近再开发一个批量查询上传的小工具,要增加一个批量选择的复选框,全选或者全不选;QCheckBox*checkBox=newQCheckBox(ui.tableWidget);checkBox->resize(40,24);ui.tableWidget->setCellWidget(0,0,checkBox);checkBox->setStyleSheet("margi......