Portál AbcLinuxu, 15. července 2025 03:12


Dotaz: qt4 tray s QSlider

13.7.2010 10:55 pou | skóre: 18
qt4 tray s QSlider
Přečteno: 181×
Odpovědět | Admin
Ahoj, chtěl bych si udělat ovládání hlasitosti s tray ikonou. Zasekl jsem se ale na problému jak zobrazit QSlider po kliknutí pravým tl. na tray ikonu. Poradíte mi prosím někdo? Díky

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Vojta Drbohlav avatar 13.7.2010 11:09 Vojta Drbohlav | skóre: 26 | blog: Blog | Strahov
Rozbalit Rozbalit vše Re: qt4 tray s QSlider
Odpovědět | | Sbalit | Link | Blokovat | Admin
Koukni se na QSystemTrayIcon a signál activated. Při jeho vyvolání by mělo stačit zobrazit QSlider nebo jiný objekt. Práci s QSystemTrayIcon můžeš vidět třeba v seriálu Grafické programy v Qt 4.
13.7.2010 22:49 pou | skóre: 18
Rozbalit Rozbalit vše Re: qt4 tray s QSlider
Diky za odpověď, članek jsem si četl, ale pořád nevím jak tam přidám ten QSlider do menu. Vypada to nějak takto:
tray = new QSystemTrayIcon(style()->standardIcon(QStyle::SP_MediaPlay),this); QSlider * slider=new QSlider();
QMenu* menu = new QMenu(this);
QAction* actionQuit = menu->addAction(slider);
tray->setContextMenu(menu);
tray->show();
metoda addAction je přetížená ale jaksi na QSlider ne, možna to nějak přetypovat na QObject (to jsem zkoušel ale marně), opravdu nevim....
Řešení 1× (Vojta Drbohlav)
Vojta Drbohlav avatar 14.7.2010 00:32 Vojta Drbohlav | skóre: 26 | blog: Blog | Strahov
Rozbalit Rozbalit vše Re: qt4 tray s QSlider

Původně jsem si myslel, že budeš muset upustit od QMenu, ale nakonec mě napadlo jiné řešení. MainWindow.h

MainWindow.h
class MainWindow : public QMainWindow
{
		Q_OBJECT
	public:
		MainWindow(QWidget * parent = 0);

	private:
		Ui::MainWindow _ui;

		QSystemTrayIcon * _trayIcon;
		QMenu * _trayMenu;
		QSlider * _traySlider;
		QWidgetAction * _sliderAction;
};

MainWindow.cpp

#include "MainWindow.h"

MainWindow::MainWindow(QWidget *parent) :
	QMainWindow(parent)
{
	_ui.setupUi(this);

	_trayIcon = new QSystemTrayIcon(style()->standardIcon(QStyle::SP_MediaPlay), this);
	_trayMenu = new QMenu(this);
	_traySlider = new QSlider(this);
	_sliderAction = new QWidgetAction(this);

	_sliderAction->setDefaultWidget(_traySlider);
	_trayMenu->addAction(_sliderAction);
	_trayIcon->setContextMenu(_trayMenu);

	_trayIcon->show();
}

Toto řešení by mělo přesně splňovat Vaše požadavky. :-) Přes QWidgetAction lze do QMenu, do QTollbaru atd. vkládat všechny QWidgety. ;-)

14.7.2010 10:09 pou | skóre: 18
Rozbalit Rozbalit vše Re: qt4 tray s QSlider
Funguje to! super, moc děkuji

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.