qtextbrowser에 하이퍼 링크 및 사용자 클릭 가능 동작을 추가하는 방법

카르 틱 친타

현재 qtextbrowser에 텍스트 데이터를 추가하고 있습니다. 이 데이터에는 하이퍼 링크 (qregex를 사용하여 캡처하고 있음)와 파일 경로 (내 디렉토리 중 하나에 대한)가 있습니다. 이제 하이퍼 링크를 클릭하면 Linux 브라우저 중 하나에서 링크를 열고 싶습니다. 여기에서 qtextbrowser에서 하이퍼 링크를 열 수 있지만 외부 도구에서는 열 수 없습니다. 그리고 파일 경로를 클릭하면 해당 위치에서 터미널을 열어야하는데 qt의 텍스트에 작업을 추가하는 방법이 없습니다.

적절한 해결책을 찾지 못했습니다.

하이퍼 링크 추가 코드 : 및 dirPath

.hpp 파일

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
    class MainWindow;
}

class MainWindow: public QMainWindow{
       Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

.cpp 파일

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    QString hyperLink = QString::fromStdString("https://www.google.co.in/");
    hyperLink = QString::fromStdString("<a href = \"") + hyperLink + 
QString::fromStdString("\" >") + hyperLink + QString::fromStdString("</a>");
    hyperLink = QString::fromStdString("HyperLink: ") + hyperLink;
    ui->textBrowser->append(hyperLink);

    QString dirLocation = QString::fromStdString("/home/user/dir");
    dirLocation = QString::fromStdString("<a href = \"") + dirLocation +
    QString::fromStdString("\" >") + dirLocation + QString::fromStdString("</a>");
    dirLocation = QString::fromStdString("Working Directory: ") + dirLocation;
    ui->textBrowser->append(dirLocation);
}

MainWindow::~MainWindow()
{
    delete ui;
}

하이퍼 링크를 클릭하면 시스템의 기본 브라우저에서 링크를 열고 싶습니다.

dirPath (현재 하이퍼 링크로 추가하고 있음)를 클릭하면 dirPath에서 터미널을 열고 싶습니다.

ui-> textbrowser는 QTextBrowser의 QWidget입니다.

Linux OS에서 작업 중입니다.

미리 도움을 주셔서 감사합니다.

Eyllanesc

작업 유형을 선택할 때 올바른 방법은 브라우저 내에서 링크를 생성하는 작업을 비활성화하는 것입니다. 이렇게하려면 다음이 사용됩니다.

ui->textBrowser->setOpenLinks(false);
ui->textBrowser->setOpenExternalLinks(false);

그런 다음 anchorClicked 신호를 원하는 로직을 작업 할 슬롯에 연결하십시오.

* .h

private slots:
    void onAnchorClicked(const QUrl &link);

* .cpp

connect(ui->textBrowser, &QTextBrowser::anchorClicked, this, &MainWindow::onAnchorClicked);
// old style
// connect(ui->textBrowser, SIGNAL(anchorClicked(QUrl)), this, SLOT(onAnchorClicked(QUrl)));

그런 다음 링크가 디렉토리인지 확인합니다. 그렇지 않으면을 통해 열려고 시도합니다. 열려고 QDesktopServices::openUrl()시도하면 경고가 있습니다. 터미널을 여는 명령은 Linux의 터미널에 따라 다릅니다. 많은 응용 프로그램이 있습니다. 터미널을 에뮬레이트하므로 정확한 답이 없습니다.이 경우 Gnome에 대한 데스크탑 관리자가 있다고 가정하고 터미널을 사용한다고 가정합니다).

void MainWindow::onAnchorClicked(const QUrl &link)
{
    if(!QFileInfo(link.toString()).isDir()){
        QDesktopServices::openUrl(link);
    }
    else{
        QProcess::startDetached(QString("gnome-terminal --working-directory=%1").arg(link.toString()));
    }
}

전체 예제는 다음 링크 에서 찾을 수 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

QTextBrowser에서 클릭 가능한 하이퍼 링크를 표시하는 방법

Pandas 및 Jupyter Notebook에서 클릭 가능한 하이퍼 링크가있는 테이블을 만드는 방법

사용자가 링크를 클릭하면 Outlook phpexcel을 열 때 이메일을 셀에 하이퍼 링크로 작성하는 방법은 무엇입니까?

사용자가 링크를 클릭하면 Outlook phpexcel을 열 때 이메일을 셀에 하이퍼 링크로 작성하는 방법은 무엇입니까?

사용자가 jsp 및 html을 사용하여 링크를 클릭하는 mysql에서 열 데이터를 업데이트하는 방법이 있습니까?

하이퍼 링크 클릭 동작 및 텍스트 선택 및 복사 기능

변수에 데이터를 추가하고 클릭 가능한 하이퍼 링크로 만드는 방법

하이퍼링크에 사용자 지정/동적 대상을 추가하는 방법

QTextBrowser에 하이퍼 링크를 삽입하는 기능 추가

RichEditViewer를 사용하여 Inno Setup에서 사용자 정의 페이지에 클릭 가능한 링크를 추가하는 방법은 무엇입니까?

클릭 가능한 웹 사이트 링크를 Snackbar에 추가하는 방법은 무엇입니까?

사용자 지정 PHP 코드에서 클릭 가능한 하이퍼 링크 텍스트를 만드는 방법

Excel VBA가 IE에서 javascript a href 링크 클릭을 자동화하는 방법

Django 관리자의 필드에 클릭 가능한 링크를 추가하는 방법은 무엇입니까?

Qt에서 사용자 지정 버튼에 클릭 된 신호 및 슬롯을 추가하는 방법

파이썬을 사용하여 ppt의 이미지에 하이퍼링크를 추가하는 방법

DataTable 하이퍼 링크가 포함 된 열에서 행 클릭을 방지하는 방법

사용자가 클릭 할 때 WebView 내부 링크에서 URL을 제공하는 방법

pdfbox를 사용하여 pdf에 하이퍼 링크를 추가하는 방법

Jasper Studio 6.03을 사용하여 Jasper 보고서에 하이퍼 링크를 추가하는 방법

C #을 사용하여 Excel의 셀에 하이퍼 링크를 추가하는 방법

officeR을 사용하여 docx 단어에 하이퍼 링크를 추가하는 방법은 무엇입니까?

부트 스트랩 및 jquery를 사용하여 특정 링크를 클릭했을 때 활성 클래스를 추가하는 방법

Pandas & Jupyter Notebook의 로컬 파일에 대한 클릭 가능한 하이퍼 링크가있는 테이블을 만드는 방법

Div 클래스를 하이퍼 링크 클래스에 추가 — 클릭시 하이퍼 링크를 컨테이너에 복제 및 추가

Fullcalendar : 사용자 지정 단추에 '링크'항목을 추가하는 방법

다른 하이퍼 링크 클릭을 기반으로하는 jQuery, 대상 div에 클래스 추가 및 다른 div 섹션에서 제거

자바 스크립트에서 동적으로 추가되는 버튼 배열에 클릭 기능을 추가하는 방법은 무엇입니까?

사용자가 링크를 클릭 할 때 다른 페이지로 이동하기 전에 맨 위로 스크롤하는 방법은 무엇입니까?

TOP 리스트

뜨겁다태그

보관