Přejít na hlavní obsah

Jak nakreslit černou vrstvu přes ostatní qt-podrobný návod

  • Denisa Vlčková
  • Recenze

Qt je výkonný rámec pro vývoj aplikací napříč platformami, který vám umožňuje vytvářet vysoce kvalitní uživatelská rozhraní. Jedním z často se vyskytujících požadavků je potřeba přidat černou vrstvu na další prvky, aby se vytvořil efekt průsvitnosti nebo stmívání. V tomto podrobném návodu se podíváme, jak to udělat.

Krok 1: vytvoření vrstvy. Nejprve vytvoříme černou vrstvu. Přidejte následující kód do funkce, která inicializuje vaše okno nebo widget:

QLabel *blackLayer = new QLabel(this); blackLayer->setStyleSheet("background-color: rgba(0, 0, 0, 150);"); blackLayer->setGeometry(0, 0, width(), height()); blackLayer->setAutoFillBackground(true);

V tomto kódu vytvoříme QLabel s názvem blackLayer, který bude sloužit jako černá vrstva. Poté nastavíme jeho styl pomocí syntaxe CSS, což indikuje požadovanou barvu pozadí a průhlednost (rgba - red, green, blue, alpha). Poté nastavíme geometrii černé vrstvy tak, aby zabírala celou dostupnou oblast rodičovského okna nebo widgetu. Na konci označíme, že vrstva by měla automaticky vyplňovat pozadí, aby byla barva viditelná.

Krok 2: Zobrazení vrstvy. Nyní, když jsme vytvořili černou vrstvu, musíme ji zobrazit přes další prvky v okně nebo widgetu. Přidejte následující kód do funkce, která je povolána po vytvoření všech prvků rozhraní:

V tomto kódu používáme funkci raise () ke zvýšení černé vrstvy v hierarchii prvků, aby se zobrazila nad ostatními prvky. Poté pomocí funkce show () zobrazíme černou vrstvu na obrazovce.

Krok 3: odstranění vrstvy. Pokud chcete odstranit černou vrstvu, když ji již nepotřebujete, přidejte do funkce další kód, který se spustí, když zavřete okno nebo odstraníte widget:

V tomto kódu odstraníme černou vrstvu pomocí příkazu delete, abychom uvolnili paměť, kterou zabírá.

Nyní máte všechny potřebné kroky k přidání černé vrstvy na další prvky v Qt. Průhlednost můžete změnit prostřednictvím hodnoty alfa ve funkci setStyleSheet(), abyste vytvořili požadovaný efekt průsvitu nebo stmívání. Hodně štěstí ve vašich projektech!

Vytvoření nového projektu v Qt Creator

Chcete-li vytvořit nový projekt v Qt Creator, postupujte podle pokynů níže:

Krok 1:

Otevřete Qt Creator v počítači. Pokud nemáte nainstalovaný Qt Creator, můžete si jej stáhnout z oficiálních stránek Qt.

Krok 2:

V nabídce Soubor vyberte možnost Vytvořit soubor nebo projekt.

Krok 3:

V okně, které se zobrazí, vyberte šablonu projektu. Qt Creator nabízí mnoho šablon pro různé typy projektů, jako je konzolová aplikace, aplikace s grafickým rozhraním atd. Vyberte vhodnou šablonu pro váš projekt.

Krok 4:

Zadejte název nového projektu a vyberte adresář, ve kterém bude projekt vytvořen.

Krok 5:

Kliknutím na tlačítko Další upravíte pokročilá nastavení projektu, jako jsou použité komponenty a knihovny.

Krok 6:

Kliknutím na tlačítko" Hotovo " vytvoříte nový projekt. Qt Creator automaticky vytvoří strukturu projektu a otevře ji v editoru kódu.

Nyní můžete začít navrhovat svůj projekt v aplikaci Qt Creator, přidávat soubory, konfigurovat nastavení a provádět další kroky potřebné k vytvoření aplikace.

Přidání více vrstev do widgetu

Nejprve je třeba vytvořit instanci třídy QStackedWidget . Poté můžete do zásobníku přidat widgety pomocí metody addWidget (). Na každou vrstvu lze umístit různé prvky, jako jsou tlačítka, textová pole, obrázky atd.

Pro přechod mezi různými vrstvami lze použít metody setCurrentIndex () nebo setCurrentWidget (). Chcete-li například přepnout na druhou vrstvu, musíte zavolat setCurrentIndex(1) .

Další nastavení a funkce lze přidat pomocí různých metod a signálů třídy QStackedWidget . Můžete například povolit automatické přepínání vrstev pomocí metody setAutoStart () zadáním časového intervalu mezi přepínáním. Je také možné zpracovat událost přepínání vrstvy pomocí signálu currentChanged ().

Když jsou přidány a nakonfigurovány všechny potřebné vrstvy, lze QStackedWidget přidat do widgetu hlavního okna pomocí metody setLayout() .

Nastavení barev a průhlednosti vrstev

Při malování černé vrstvy na další vrstvy v Qt lze snadno upravit její barvu a průhlednost. K tomu je třeba použít třídu QPainter a její metody.

Chcete-li nastavit barvu vrstvy, můžete použít metodu setPen u objektu QPainter . Například:

// Создание объекта QPainterQPainter painter(this);// Установка цвета на черныйpainter.setPen(Qt::black);// Нарисовать черный слойpainter.drawRect(0, 0, width(), height());

K nastavení průhlednosti vrstvy lze použít metodu setOpacity u objektu QPainter . Průhlednost by měla být nastavena v rozmezí 0 až 1, Kde 0 znamená zcela průhlednou vrstvu a 1 je zcela neprůhledná. Například:

// Создание объекта QPainterQPainter painter(this);// Установка прозрачности на 0.5 (полупрозрачность)painter.setOpacity(0.5);// Нарисовать полупрозрачный слойpainter.drawRect(0, 0, width(), height());

Tímto způsobem můžete snadno upravit barvu a průhlednost černé vrstvy nad ostatními vrstvami v Qt pomocí metod setPen a setopacity třídy QPainter .

Práce s černou barvou

V QT lze k nakreslení černé vrstvy na další prvky použít různé způsoby. Jedním z nich je použití třídy QPainter a její metody fillRect . Tato metoda umožňuje vyplnit obdélníkovou oblast určitou barvou, včetně černé.

Nejprve je nutné vytvořit objekt QPainter a přenést jej na předmět, na kterém bude kresba provedena. Metodu fillRect pak můžete vyvolat zadáním souřadnic obdélníkové oblasti a požadované barvy RGB. Chcete-li například nakreslit černou vrstvu přes celé okno, můžete použít následující kód:

QPainter painter(this);painter.fillRect(rect(), Qt::black);

Po vyvolání metody fillRect bude černá vrstva nakreslena přes všechny prvky na okně.

Kreslení černé vrstvy přes ostatní

Pro kreslení černé vrstvy na další prvky v Qt lze použít metodu QPainter třídy QWidget. Tato metoda vám umožňuje nakreslit obdélník dané barvy na povrch widgetu.

Pro začátek je nutné vytvořit třídu zděděnou od QWidget. V této třídě určujeme metodu paintEvent, který bude vyvolán v případě potřeby překreslením widgetu.

Uvnitř metody paintEvent vytváříme objekt QPainter a použijeme metody tohoto objektu k nakreslení požadovaných prvků na widgetu. Chcete-li na vše nakreslit obdélník černé barvy, použijte metodu fillRect.

void MyWidget::paintEvent(QPaintEvent *event)

V tomto příkladu jsme použili metodu rect() Chcete-li získat obdélník odpovídající velikosti widgetu. Tento obdélník pak vyplníme černou barvou pomocí metody fillRect.

Po definování třídy widgetu jej lze přidat do hlavního okna aplikace a nastavit požadované rozměry.

Pomocí výše uvedeného přístupu je tedy možné snadno nakreslit černou vrstvu na další prvky Qt.

Použití metody QPainter::begin()

Než začnete kreslit černou vrstvu na jiné prvky, musíte vytvořit instanci třídy QPainter a vyvolat metodu begin () zadáním objektu, na kterém bude kresba probíhat. Pokud například potřebujete nakreslit černou vrstvu přes widget myWidget, kód může vypadat následovně:

// Создание экземпляра класса QPainterQPainter painter(myWidget);// Инициализация рисованияpainter.begin(myWidget);// Перекрашивание слоя в черный цветpainter.fillRect(myWidget->rect(), Qt::black);// Завершение рисованияpainter.end();

V tomto příkladu vytvoříme instanci třídy QPainter a přeneseme ji na widget myWidget jako parametr konstruktoru. Poté vyvoláme metodu begin () a přeneseme ji také na widget. Poté použijeme metodu fillRect () k vyplnění celé oblasti widgetu černou barvou. Nakonec vyvoláme metodu end () pro dokončení kreslení.

Použití metody QPainter::begin () vám umožňuje vytvořit kontext kreslení a provést potřebné operace k zobrazení černé vrstvy na jiných prvcích v aplikaci založené na Qt.