Byla vydána nová stabilní verze 7.2 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 134. Přehled novinek i s náhledy v příspěvku na blogu.
Eric Migicovsky, zakladatel společnosti Pebble, v lednu oznámil, že má v plánu spustit výrobu nových hodinek Pebble s již open source PebbleOS. Včera je představil a spustil předprodej: Core 2 Duo za 149 dolarů s dodáním v červenci a Core Time 2 za 225 dolarů s dodáním v prosinci.
3D software Blender byl vydán ve verzi 4.4. Podrobnosti v poznámkách k vydání. Videopředstavení na YouTube.
Byla vydána Java 24 / JDK 24. Nových vlastností (JEP - JDK Enhancement Proposal) je 24. Nová Java / JDK vychází každých 6 měsíců. LTS verze jsou 8, 11, 17 a 21 a bude 25.
Byla vydána betaverze Fedora Linuxu 42, tj. poslední zastávka před vydáním finální verze, která je naplánována na úterý 15. dubna. Z novinek (ChangeSet) lze vypíchnout edici KDE Plasma Desktop nebo spin Cosmic. Vydán byl také Fedora Asahi Remix 42 Beta pro Apple Silicon.
Byla vydána verze 12.00 linuxové distribuce SystemRescue, původně SystemRescueCd, určené pro záchranu systémů a dat. Přehled novinek v changelogu. Přidána byla podpora bcachefs, Linux byl povýšen na verzi 6.12.19, GParted na verzi 1.7.0, nwipe na verzi 0.38, dump na verzi 0.4b49, …
Google kupuje společnost Wiz za 32 miliard dolarů.
Byly zpracovány a na YouTube zveřejněny videozáznamy jednotlivých přednášek z letošního Installfestu.
Společnost Bambu Lab spustila na Kickstarteru kampaň CyberBrick: Beyond Bricks. Jedná se o modulární systém programovatelných a dálkově ovládaných hraček. Objednat si lze jenom moduly s čipy a hračky si vytisknout na 3D tiskárně.
Mikrokontroléry RP2350A a RP2350B jsou již volně v prodeji. Představeny byly v srpnu loňského roku společně s Raspberry Pi Pico 2.
Zdravím,
Mám v podstatě dvě otázky:
1) Dynamická změna velikosti okna podle velikosti hlavního widgetu. Chci vyrobit okno, ve kterém bude tabulka nějakých objektů a chci, aby se velikost okna přizpůsobila velikosti tabulky (pokud se vejde na obrazovku). Tabulka může být pokaždé jinak veliká, takže nemůžu použít fixní velikost.
Skládá se to z QMainWindow (hlavní okno), ve kterém je QScrollArea a v ní můj vlastní widget Tabulka (QGridLayout s dalšími widgety).
Zkoušel jsem tohle, ale okno se vyrobí stejně velké jako když jsem velikost nijak nenastavoval.
QMainWindow window; QScrollArea * scroll = new QScrollArea; Table * table = new Table; table->generateTable(); scroll->setWidget(table); window.setCentralWidget(scroll); window.resize(scroll->sizeHint());
Tabulka se za běhu může zvětšovat/zmenšovat. Bude se okno dynamicky zvětšovat samo od sebe nebo ho musím po každé změně překreslit ručně? Napadá mě předefinovat resizeEvent tabulky, který zavolá resizeEvent okna, ale přijde celkem komplikované.
2) Maximalizace okna jen na velikost widgetu
Tohle by mělo jít pomocí setMaximumSize(), ale jak zjistím velikost tabulky, když nic z tohohle nevrací rozumnou velikost?
scroll->size(); scroll->sizeHint(); //pripadne scroll->viewport()->size(); scroll->viewport()->sizeHint();
Ale pokaždé, když si néjaký program jen tak mění velikost okna, tak mě to děsně štve.Přesně tak. Pokud máš dobrý důvod něco takového dělat, nastav rozumný horní limit za který se okno už samo zvětšovat nebude.
Problém tam dělá ta QScrollArea. Zkus resizovat na velikost toho, co je uvnitř (table).Ale jak? Když to zkusím takhle,
scroll->setWidget(table); scroll->resize(table->size());nic se nezmění. Možná, že table->size() vrací divnou velikost, ale to se mi nezdá, protože samotná tabulka (jako hlavní widget) se vykreslí tak velká jak je potřeba, případně „vyteče“ ven, když se nevejde na obrazovku.
Aktualizace:
1) Teď jsem zkusil resizovat okno až těsně před tím než ho zobrazím a funguje to. Možná pomohlo resizovat na velikost widgetu samotného a ne na velikost widgetu v nějakém kontejneru. Akorát se nezobrazí celé, oříznuté o pár pixelů napravo a dole, takže se objeví oba ScrollBary. Viz příloha.
2) Okno se sice nedá zvětšit nad určitou velikost ručně (myší),
window->resize(table->size())ale tlačítko Maximize ignoruje maximální velikost widgetu. Jak tohle obejít?
const int fill = 4; // spravna velikost okna window.resize(table->width() + fill,table->height() + fill); window.setMaximumSize(table->width() + fill, table->height() + fill); // spatna velikost okna QSize size; size = table->size(); size.rwidth() += fill; size.rheight() += fill; window.resize(size); window.setMaximumSize(size);Samozřejmě použiju to co funguje, ale zajímalo by mě proč se to takhle chová.
Ad 2: Mea culpa, napsal jsem to špatně.
window->setMaximumSize(...)omezí velikost okna při ručním zvětšování (myší), ale tlačítko Maximize ho vesele ingoruje a zvětší okno na celou obrazovku.
Co jsem se zatím dočetl, tak se o maximalizaci a) stará Window Manager, b) maximizeWindowEvent
neexistuje a nedá se pořádně rozlišit co je „obyčejný“ resizeEvent
od maximalizace. Čili řešení může být přepsat ve widgetu resizeEvent
a v něm kontrolovat rozdíly nové a staré velikosti a konečnou velikost případně upravit.
Musím to udělat takhle nebo existuje ještě jiný způsob?
Tiskni
Sdílej: