国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

UBuntu18.04 Qt之雙HDMI屏切換

這篇具有很好參考價值的文章主要介紹了UBuntu18.04 Qt之雙HDMI屏切換。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

UBuntu18.04 Qt之雙HDMI接2個4K屏并分別設(shè)置分辨率、主屏、副屏

一、設(shè)置HDMI-2為主屏

在main函數(shù)里面添加:

#include "mainwindow.h"
#include <QApplication>
 
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
 
    {
        long nTotal = 0;
        char cData[2048] = {0};
        FILE *fstream = popen("xrandr | grep 'HDMI-2 connected'", "r");
        if(fstream){
            while(fgets(cData, sizeof(cData), fstream)){
                nTotal++;
            }
            pclose(fstream);
        }
 
        if(nTotal > 0){
            system("xrandr --output HDMI-2 --primary --left-of HDMI-1 --auto");
        }
    }
 
    MainWindow w;
    w.show();
 
    return a.exec();
}

二、代碼切換程序在主屏或副屏顯示

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
 
#include <QMainWindow>
 
namespace Ui {
class MainWindow;
}
 
class MainWindow : public QWidget
{
    Q_OBJECT
 
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
 
private slots:
    void StartTimer();
    void OnClickBtn1();
    void OnClickBtn2();
    void OnClickBtn3();
    void OnClickBtn4();
    void OnClickBtn5();
 
private:
    void SetPos(int nScreen);
 
private:
    void timerEvent(QTimerEvent*);
 
private:
    int m_nTimerID;
 
private:
    int m_nScreebResolutions;
    int m_nScreenID;
};
 
#endif // MAINWINDOW_H

MainWIndow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QLabel>
#include <QScreen>
#include <QPushButton>
#include <QHBoxLayout>
#include <QDesktopWidget>
 
void OutPut(const char* cData)
{
    FILE* pFile = fopen("/opt/NVMS/111.log", "ab+");
    if(pFile){
        fwrite(cData, 1, strlen(cData), pFile);
        fclose(pFile);
    }
}
 
MainWindow::MainWindow(QWidget *parent) :
    QWidget(parent)
{
    QLabel* p = new QLabel("123", this);
 
    QPushButton* qBtn1 = new QPushButton("0_1920", this);
    qBtn1->setFixedSize(100, 50);
    connect(qBtn1, &QPushButton::clicked, this, &MainWindow::OnClickBtn1);
 
    QPushButton* pBtn2 = new QPushButton("0_3840", this);
    pBtn2->setFixedSize(100, 50);
    connect(pBtn2, &QPushButton::clicked, this, &MainWindow::OnClickBtn2);
 
    QPushButton* qBtn3 = new QPushButton("1_1920", this);
    qBtn3->setFixedSize(100, 50);
    connect(qBtn3, &QPushButton::clicked, this, &MainWindow::OnClickBtn3);
 
    QPushButton* pBtn4 = new QPushButton("1_3840", this);
    pBtn4->setFixedSize(100, 50);
    connect(pBtn4, &QPushButton::clicked, this, &MainWindow::OnClickBtn4);
 
    QPushButton* pBtn5 = new QPushButton("Query", this);
    pBtn5->setFixedSize(100, 50);
    connect(pBtn5, &QPushButton::clicked, this, &MainWindow::OnClickBtn5);
 
 
    QHBoxLayout* pLayout = new QHBoxLayout(this);
    pLayout->addWidget(p, 0, Qt::AlignLeft | Qt::AlignTop);
    pLayout->addWidget(qBtn1, 0, Qt::AlignLeft | Qt::AlignTop);
    pLayout->addWidget(pBtn2, 0, Qt::AlignLeft | Qt::AlignTop);
    pLayout->addWidget(qBtn3, 0, Qt::AlignLeft | Qt::AlignTop);
    pLayout->addWidget(pBtn4, 0, Qt::AlignLeft | Qt::AlignTop);
    pLayout->addWidget(pBtn5, 0, Qt::AlignLeft | Qt::AlignTop);
 
    //
    m_nScreenID = 0;
    m_nScreebResolutions = 0;
    SetPos(m_nScreenID);
}
 
MainWindow::~MainWindow()
{
 
}
 
void MainWindow::StartTimer()
{
 
}
 
void MainWindow::timerEvent(QTimerEvent*)
{
    SetPos(m_nScreenID);
 
    if(m_nScreenID == 1){
        OnClickBtn5();
    }
}
 
void MainWindow::SetPos(int nScreen)
{
    char cData[2048] = {0};
    QDesktopWidget* desktopWidget = QApplication::desktop();
    QRect rect = desktopWidget->availableGeometry(nScreen);
    QRect rect1 = desktopWidget->screenGeometry(nScreen);
 
 
 
    /*if(m_nScreenID == 0){*/
        setGeometry(rect);
        sprintf(cData, "AAA:%d   %d   %d   %d   %d\n", nScreen, rect.left(), rect.top(), rect.width(), rect.height());
    /*}
    else{
        setGeometry(QRect(rect1.left(), rect1.top(), rect1.width(), rect1.height()));
        sprintf(cData, "AAA:%d   %d   %d   %d   %d\n", nScreen, rect1.left(), rect1.top(), rect1.width(), rect1.height());
    }*/
 
    OutPut(cData);
 
   /*{
        int nScreenNum = qApp->desktop()->screenCount();
        for(int i = 0; i < nScreenNum; i++){
            QScreen* qScreen = qApp->screens().at(i);
            memset(cData, 0, 2048);
            sprintf(cData, "BBB:%d   %d   %d   %d   %d   %d\n", nScreenNum, nScreen, qScreen->geometry().left(), qScreen->geometry().top(), qScreen->geometry().width(), qScreen->geometry().height());
            OutPut(cData);
        }
        memset(cData, 0, 2048);
        sprintf(cData, "CCC:%d   %d   %d   %d   %d   %d\n", nScreenNum, nScreen, rect1.left(), rect1.top(), rect1.width(), rect1.height());
        OutPut(cData);
    }*/
}
 
void MainWindow::OnClickBtn1()
{
    char cData[2048] = {0};
    FILE *fstream = popen("xrandr --output HDMI-2 --mode 1920x1080 --left-of HDMI-1", "r");//xrandr -s 1920x1080 --screen 0
    if(fstream){
        while(fgets(cData, sizeof(cData), fstream)){
            OutPut(cData);
        }
        pclose(fstream);
    }
 
    m_nScreenID = 0;
    m_nScreebResolutions = 0;
    m_nTimerID = startTimer(1000);
}
 
void MainWindow::OnClickBtn2()
{
    char cData[2048] = {0};
    FILE *fstream = popen("xrandr --output HDMI-2 --mode 3840x2160 --left-of HDMI-1", "r");//xrandr -s 3840x2160 --screen 0
    if(fstream){
        while(fgets(cData, sizeof(cData), fstream)){
            OutPut(cData);
        }
        pclose(fstream);
    }
 
    m_nScreenID = 0;
    m_nScreebResolutions = 1;
    m_nTimerID = startTimer(1000);
}
void MainWindow::OnClickBtn3()
{
    char cData[2048] = {0};
    FILE *fstream = popen("xrandr --output HDMI-1 --mode 1920x1080 --right-of HDMI-2 ", "r");
    if(fstream){
        while(fgets(cData, sizeof(cData), fstream)){
            OutPut(cData);
        }
        pclose(fstream);
    }
 
    m_nScreenID = 1;
    m_nScreebResolutions = 0;
    m_nTimerID = startTimer(1000);
}
 
void MainWindow::OnClickBtn4()
{
    char cData[2048] = {0};
    FILE *fstream = popen("xrandr --output HDMI-1 --mode 3840x2160 --right-of HDMI-2 ", "r");
    if(fstream){
        while(fgets(cData, sizeof(cData), fstream)){
            OutPut(cData);
        }
        pclose(fstream);
    }
 
    m_nScreenID = 1;
    m_nScreebResolutions = 1;
    m_nTimerID = startTimer(1000);
}
 
void MainWindow::OnClickBtn5()
{
    char cData[2048] = {0};
    FILE *fstream = popen("xrandr ", "r");
    if(fstream){
        while(fgets(cData, sizeof(cData), fstream)){
            OutPut(cData);
        }
        pclose(fstream);
    }
}

左邊的4k顯示器和右邊的4k顯示器分別顯示程序的主界面文章來源地址http://www.zghlxwxcb.cn/news/detail-662772.html

到了這里,關(guān)于UBuntu18.04 Qt之雙HDMI屏切換的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • pcl+vtk(二)Ubuntu18.04下載安裝基于使用QT的pcl1.13+vtk8.2,以及卸載

    pcl+vtk(二)Ubuntu18.04下載安裝基于使用QT的pcl1.13+vtk8.2,以及卸載

    1.Qt版本 Qt5.4以前版本:QVTKWidget2/QVTKWidget。 Qt5.4以后版本:QVTKOpenGLWidget/QVTKOpenGLWidget。 2.VTK版本(Qt版本為5.4之后) 在VTK8.2以前的版本:QVTKOpenGLWidget; 在VTK8.2及以后的版本里:QVTKOpenGLNativeWidget; QVTKWidget:目前了解到的只可顯示點云,沒有在網(wǎng)上找到顯示模型的例子。 QVTKOpen

    2024年02月04日
    瀏覽(25)
  • ubuntu18.04下opencv多版本安裝及切換

    ubuntu18.04下opencv多版本安裝及切換

    Opencv網(wǎng)站:https://opencv.org/releases/ 查看已安裝opencv的版本 建立opencv安裝文件夾 下載解壓后 安裝路徑設(shè)置:CMAKE_INSTALL_PREFIX=/usr/local/opencv4.5.1 成功圖示 1、安裝成功后還需要設(shè)置opencv的環(huán)境變量。打開文件: 2、將opencv3.4.5庫文件的路徑添加到環(huán)境變量中,將以下內(nèi)容添加到最后

    2024年04月16日
    瀏覽(28)
  • 在 Ubuntu 18.04 中配置靜態(tài) IP 及靈活切換

    在 Ubuntu 18.04 中配置靜態(tài) IP 及靈活切換

    Ubuntu 18.04 使用 Netplan 來配置 IP 地址,Netplan 是一個新的命令行網(wǎng)絡(luò)配置工具。 新的 IP 配置方法不會再用到 /etc/network/interfaces 這個文件,取而代之的是一個 YAML 文件。 默認(rèn)的 Netplan 配置文件一般在 /etc/netplan 目錄下。 查看當(dāng)前 ip 和 網(wǎng)關(guān) 找到 Netplan 默認(rèn)的網(wǎng)絡(luò)配置文件所在

    2024年02月06日
    瀏覽(26)
  • 在 Ubuntu 18.04 中配置靜態(tài) IP 地址及靈活切換IP的辦法

    在 Ubuntu 18.04 中配置靜態(tài) IP 地址及靈活切換IP的辦法

    Ubuntu 18.04 使用 Netplan 來配置 IP 地址,Netplan 是一個新的命令行網(wǎng)絡(luò)配置工具。 新的 IP 配置方法不會再用到 /etc/network/interfaces 這個文件,取而代之的是一個 YAML 文件。 默認(rèn)的 Netplan 配置文件一般在 /etc/netplan 目錄下。 首先先找到 Netplan 默認(rèn)的網(wǎng)絡(luò)配置文件所在之處: 我們可

    2023年04月23日
    瀏覽(23)
  • Ubuntu 18.04開發(fā)環(huán)境搭建

    ????????工作不易,為了避免未來需要重裝系統(tǒng)的進(jìn)行折騰,個人進(jìn)行了Ubuntu環(huán)境配置的整合,方便自己未來能順暢的配置好開發(fā)環(huán)境,同時分享給大家。本文多出有轉(zhuǎn)載其他文,并相應(yīng)的標(biāo)注了轉(zhuǎn)載內(nèi)容,如有侵權(quán)請聯(lián)系博主刪除。 vmware下載: 鏈接:https://pan.baidu.com

    2024年02月02日
    瀏覽(94)
  • Ubuntu 18.04修改系統(tǒng)語言為(中文簡體)教程

    Ubuntu 18.04修改系統(tǒng)語言為(中文簡體)教程

    目錄 ? 說明 步驟 1. 打開系統(tǒng)設(shè)置 2. 進(jìn)入“區(qū)域和語言”設(shè)置 3. 添加中文語言支持 4. 選擇安裝簡體中文 5. 修改系統(tǒng)語言 6. 重啟系統(tǒng) ? ? Ubuntu全程需要聯(lián)網(wǎng)正常,因為要下一些安裝包。 ? 1. 打開系統(tǒng)設(shè)置 點擊屏幕右上角的系統(tǒng)菜單圖標(biāo),選擇“設(shè)置”選項。 ? 2. 進(jìn)入“區(qū)

    2024年02月03日
    瀏覽(28)
  • ubuntu18.04復(fù)現(xiàn)yolo v8環(huán)境配置之CUDA與pytorch版本問題以及多CUDA版本安裝及切換

    ubuntu18.04復(fù)現(xiàn)yolo v8環(huán)境配置之CUDA與pytorch版本問題以及多CUDA版本安裝及切換

    最近在復(fù)現(xiàn)yolo v8的程序,特記錄一下過程 環(huán)境:ubuntu18.04+ros melodic 小知識:GPU并行計算能力高于CPU—B站UP主說的 Ubuntu可以安裝多個版本的CUDA。如果某個程序的Pyorch需要不同版本的CUDA,不必刪除之前的CUDA,可以實現(xiàn)多版本的CUDA切換 一、查看當(dāng)前PyTorch使用的CUDA版本: 注意

    2024年02月11日
    瀏覽(22)
  • Ubunutu18.04+Qt5.14+Dlib19.24+Opencv3.4.16實時人眼監(jiān)測實驗

    Ubunutu18.04+Qt5.14+Dlib19.24+Opencv3.4.16實時人眼監(jiān)測實驗

    ??在Ubuntu18.04實現(xiàn)的一個人眼監(jiān)測小程序,使用Qt5.14、Dlib19.24、Opencv3.4.16實現(xiàn)。 ??其主要實現(xiàn)思想是,首先通過 Opencv 獲取攝像頭數(shù)據(jù),然后通過 Dlib 提取人臉68關(guān)鍵點的算法對所輸入圖片中的人臉進(jìn)行關(guān)鍵點檢測,檢測出眼部的關(guān)鍵點后,在用 Opnecv 中的畫圖命令進(jìn)行繪制

    2023年04月13日
    瀏覽(25)
  • iTOP-RK3568開發(fā)板Docker 安裝 Ubuntu 18.04

    iTOP-RK3568開發(fā)板Docker 安裝 Ubuntu 18.04

    Docker 下載安裝 Ubuntu18.04,輸入以下命令: sudo apt update docker pull ubuntu:18.04 切換 Shell 到 Ubuntu 18.04,輸入以下命令: docker container run -p 8000:3000 -it ubuntu:18.04 /bin/bash -p 參數(shù):容器的 3000 端口映射到本機的 8000 端口。 -it 參數(shù):容器的 Shell 映射到當(dāng)前的 Shell,然后你在本機窗口輸

    2024年02月15日
    瀏覽(25)
  • 如何在Ubuntu 18.04上安裝PHP 7.4并搭建本地開發(fā)環(huán)境

    PHP是一種流行的服務(wù)器腳本語言,用于創(chuàng)建動態(tài)和交互式web頁面。開始使用你選擇的語言是學(xué)習(xí)編程的第一步。 本教程將指導(dǎo)您在Ubuntu上安裝PHP 7.4,并通過命令行設(shè)置本地編程環(huán)境。您還將安裝依賴管理器Composer,并通過運行腳本來測試您的安裝。 要完成本教程,您需要安

    2024年02月11日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包