Byl představen editor MonoSketch, webová aplikace pro tvorbu diagramů, technických nákresů, flowchartů a různých dalších vizualizací, to vše jenom z ASCII znaků. Všechny operace běží pouze v prohlížeči uživatele a neprobíhá tedy žádné nahrávání dat na server. Zdrojový kód aplikace (drtivá většina Kotlin, žádné C#) je dostupný na GitHubu pod licencí Apache 2.0.
Byla vydána nová verze 3.7.0 multiplatformního svobodného frameworku pro zpracování obrazu G'MIC (GREYC's Magic for Image Computing, Wikipedie). Přehled novinek i s náhledy nových filtrů na PIXLS.US.
Všem na AbcLinuxu vše nejlepší k Valentýnu aneb Dni lásky ke svobodnému softwaru (I love Free Software Day, Mastodon, 𝕏).
Eric Migicovsky představil Pebble Emulator, tj. emulátor hodinek Pebble (PebbleOS) běžící ve webovém prohlížeči. Za 6 hodin jej napsal Claude Code. Zdrojové kódy jsou k dispozici na GitHubu.
Byla vydána nová verze 3.41 frameworku Flutter (Wikipedie) pro vývoj mobilních, webových i desktopových aplikací a nová verze 3.11 souvisejícího programovacího jazyka Dart (Wikipedie).
Rusko zcela zablokovalo komunikační platformu WhatsApp, řekl včera mluvčí Kremlu Dmitrij Peskov. Aplikace, jejímž vlastníkem je americká společnost Meta Platforms a která má v Rusku na 100 milionů uživatelů, podle Peskova nedodržovala ruské zákony. Mluvčí zároveň lidem v Rusku doporučil, aby začali používat domácí aplikaci MAX. Kritici tvrdí, že tato aplikace ruské vládě umožňuje lidi sledovat, což úřady popírají.
Před 34 lety, ve čtvrtek 13. února 1992, se tehdejší Česká a Slovenská Federativní Republika oficiálně (a slavnostně) připojila k Internetu.
Agent umělé inteligence vytvořil 'útočný' článek o Scottu Shambaughovi, dobrovolném správci knihovny matplotlib, poté, co vývojář odmítl agentem navrženou změnu kódu (pull request). 'Uražený' agent autonomně sepsal a publikoval na svém blogu článek, který přisuzuje Shambaughovi smyšlené motivace, egoismus a strach z AI coby konkurence.
Bylo vydáno Ubuntu 24.04.4 LTS, tj. čtvrté opravné vydání Ubuntu 24.04 LTS s kódovým názvem Noble Numbat. Přehled novinek a oprav na Discourse.
V pátek 20. února 2026 se v pražské kanceláři SUSE v Karlíně uskuteční 6. Mobile Linux Hackday, komunitní setkání zaměřené na Linux na mobilních zařízeních, kernelový vývoj a uživatelský prostor. Akce proběhne od 10:00 do večera. Hackday je určen všem, kteří si chtějí prakticky vyzkoušet práci s linuxovým jádrem i uživatelským prostorem, od posílání patchů například pomocí nástroje b4, přes balíčkování a Flatpak až po drobné úpravy
… více »
using namespace std;
class ClassPrihlasit : public QObject
{
Q_OBJECT
public slots:
void cppSlot() { cout << "Called the C++ slot with message:"; }
};
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QWidget *window = new QWidget();
//sirka výska
window->resize(200, 110);
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("88.86.113.81");
db.setDatabaseName("chat");
db.setUserName("chat");
db.setPassword("********");
db.open();
QSqlQuery sql;
sql.prepare( "SELECT id FROM uzivatele where email='info@efadesigner.cz' and heslo=sha1('********')" );
sql.exec();
QSqlRecord rec = sql.record();
int pocet = rec.count();
cout << pocet;
QLabel *email = new QLabel(QString("Email: "), window );
email->setObjectName( "email" );
email->setGeometry( QRect(20, 10, 83, 21) );
QLineEdit *email_input = new QLineEdit(QString(""), window );
email_input->setObjectName( "textEdit" );
email_input->setGeometry( QRect(60, 10,100, 21) );
QLabel *heslo = new QLabel(QString("Heslo: "), window );
heslo->setObjectName( "heslo" );
heslo->setGeometry( QRect(20, 40, 83, 21) );
QLineEdit *heslo_input = new QLineEdit(QString(""), window );
heslo_input->setObjectName( "textEdit" );
heslo_input->setGeometry( QRect(60, 40,100, 21) );
heslo_input->setEchoMode(QLineEdit::Password);
QPushButton *prihlasit = new QPushButton(QString("Prihlasit"), window);
//ODSAZENI OD LEVA , VRCHU, SIRKA VYSKA
prihlasit->setGeometry(120, 70, 80, 30);
//události
ClassPrihlasit test;
QObject::connect(prihlasit, SIGNAL(clicked()),&test, SLOT(cppSlot()));
window->show();
return app.exec();
}
skoro dole volam udalost cppSlot() kliknutim na tlacitko prihlasit ale hlásí mě to chybu
(.text.startup+0x5ab):-1: error: undefined reference to `vtable for ClassPrihlasit'
pritom tu class mam definovanou nahoře, už netuším co dělám špatně a za jakou koliv radu co povede k řešení budu Rád.
Řešení dotazu:
moc na příslušný hlavičkový soubor, což se obvykle nedělá, protože je to pracné a snadno se to zapomene.
Mnohem lepší je moc soubory generovat automaticky. qmake to pokud vím dělá samo bez dalšího zásahu, jak to udělat pro obyčejný makefile je popsáno přímo v dokumentaci Qt. Pro CMake je možné použít buď qt4_automoc() na všechny zdrojáky a moc se vygeneruje pro všechny, pro které je to potřeba, nebo lze použít qt4_wrap_cpp() pro vygenerování moc pro konkrétní soubor.
pak jsem dal opet ctrl+r pro kompilaci a hups byli tito chyby v moc souboru main.moc
a na google jsem si stim nejak moc neporadil pokud by nekdo mel radu dekuji
void GrafikaPrihlaseni(){
QWidget *window = new QWidget();
//sirka výska
window->resize(200, 110);
QLabel *email = new QLabel(QString("Email: "), window );
email->setObjectName( "email" );
email->setGeometry( QRect(20, 10, 83, 21) );
QLineEdit *email_input = new QLineEdit(QString(""), window );
email_input->setObjectName( "textEdit" );
email_input->setGeometry( QRect(60, 10,100, 21) );
QLabel *heslo = new QLabel(QString("Heslo: "), window );
heslo->setObjectName( "heslo" );
heslo->setGeometry( QRect(20, 40, 83, 21) );
QLineEdit *heslo_input = new QLineEdit(QString(""), window );
heslo_input->setObjectName( "textEdit" );
heslo_input->setGeometry( QRect(60, 40,100, 21) );
heslo_input->setEchoMode(QLineEdit::Password);
QPushButton *prihlasit = new QPushButton(QString("Prihlasit"), window);
//ODSAZENI OD LEVA , VRCHU, SIRKA VYSKA
prihlasit->setGeometry(120, 70, 80, 30);
//události
prihlaseni prihlasit_click;
QWidget::connect(prihlasit, SIGNAL(clicked()),&prihlasit_click, SLOT(UserPrihlaseni()));
window->show();
}
kterou si samozrejme radne pripojim do projektu (je v samostatnem souboru) a prez hlavickove soubory ji pripojim a z main zavolam , grafika se zobrazi, ale kdyz kliknu na tlacitko tak to nic nevykona ani chybu to nezobrazi ale kdyz to dam cele do mainu tak to projde v pohode
hellou word jsem rozebral snad uz vsechno co jsem nasel
using namespace std;. Motat si do Qt STL je celkem zbytečné. Na ladicí výpisy máme qDebug().
A doporučuju použvat konvence pojmenovávání jako má Qt. Je to pak krásně jednotné a přehledné, i když to není to co máš nejraději, je ta jednotnost lepší než to motat.
Také je lepší zdědit si třídu QWidget a v konstruktoru vyrobit všechny widgety co tam chceš. Pak místo QObject::connect() ti stačí prostě jen connect(widget, signál, this, SLOT(privátní_metoda)).
A teď k té chybě:
Pokud vyrobíš objekt prihlasit_click jen takle bez new, tak se při ukončení metody, kde byl vytvořen, zlikviduje, takže později při zavolání slotu už ten objekt neexistuje. Buď ho vyrob pomocí new a měj u něj konstruktor s parametrem QObject *parent, který předáš při inicializaci do QObject, aby se Qt postaralo automaticky o uklizení objektu při likvidaci rodiče, nebo si ho dovnitř předej odjinud.
Prihlasit *prihlasitClick = new Prihlasit(window); QWidget::connect(prihlasit, SIGNAL(clicked()), prihlasitClick, SLOT(UserPrihlaseni()));Chybu to nehlásí, protože při likvidaci objektu
prihlasit_click se zlikvidují i propojení signálů, takže v okamžiku, kdy klikneš na to tlačíko už není nic napojeno.
V main() to funguje jen díky tomu, že instance objektu existuje i v době, kdy voláš app.exec().
Takže to co jsi udělal by mělo vypadat takto:
class WidgetPrihlaseni : QWidget {
private:
QLineEdit *m_email;
QLineEdit *m_heslo;
public:
WidgetPrihlaseni(QWidget *parent = NULL) : QWidget(parent)
{
//sirka výska
// window->resize(200, 110); -- neni treba, qt to spocita samo
QGridLayout layout = new QGridLayout(this);
QLabel *email_label = new QLabel(QString("Email:"));
layout->addWidget(email_label, 1, 1);
m_email = new QLineEdit(QString(""));
layout->addWidget(m_email, 1, 2);
QLabel *heslo = new QLabel(QString("Heslo:"));
layout->addWidget(heslo, 2, 1);
m_heslo = new QLineEdit();
m_heslo->setEchoMode(QLineEdit::Password);
layout->addWidget(m_heslo, 2, 2);
QPushButton *prihlasit = new QPushButton(QString("Prihlasit"));
layout->addWidget(prihlasit, 3, 2);
//události
connect(prihlasit, SIGNAL(clicked()), login, SLOT(UserPrihlaseni()));
// this->show(); -- neni treba, vola se to samo
// rekurzivne, takze to patri jen jednou do main()
}
public slots:
void login()
{
// Tady nebudeš dělat samotné přihlášení, ale jen
// přepošleš data jinému objektu někde v aplikaci,
// který se stará o session.
qDebug() << "email:" << m_email->text();
qDebug() << "heslo:" << (m_heslo->text() == "" ? "empty" : "*****");
emit submited(m_email->text(), m_heslo->text());
}
signals:
void submited(const QString & email, const QString & password);
};
QWidget *window= new WidgetPrihlaseni;
window->show();
a uz me to jelo ok a pokud mohu jest jednu otazku jak pak vypnu to oknu?
krom toho ze bych to main.cpp napsal window->close() ale napr z nejake vnejsi funkce zda k tomu jde pristoupit do toho main a tu promenou window proste vypnotu cvy vyvolat a vypnout jinde?
Ještě je dobrým zvykem těla metod přesunout do cpp souboru a v hlavičkovém mít jen deklarace. Takle dohromady jsem to sesypal kvůli čitelnosti v diskusi.
to okno zlikviduješ stejně jako jakýkoliv jiný widget – doporučuju zavolat slot (metodu) deleteLater(). Případně si můžeš hrát s hide() a show(). Odkud to budeš volat záleží na kontextu a na logice aplikace.
Na modální dialogy je ale lepší použít třídu QDialog a z ní zděděné.
Použití pak může vypadat takto:
LoginDialog ld;
if (ld.exec() == QDialog::Accepted) {
qDebug() << ld.email() << ld.password();
}
Modifikaci kódu z mého minulého příspěvku určitě zvládneš, vlastně jen změníš rodičovskou třídu z QWidget na QDialog a doladíš detaily.
window->close();a bylo vystarano ale to nemohu udelat v najake funkci kdyz je to ve tride uplne nekde jinde
a destruktor me na to nefunguje
jinak dialog je fakt lepsi :)
takze me jeste asi chvilku potrva nez to cele pochopim takze dekuji za schovyvavost.
#include "main.moc"ted me to hlasi pro Kontakt List v mainwindow a uz sem skousel davat include "mainwindow.moc" i kontaktlist.moc (podle nazvu cpp) snad vsude kde se dalo na konce souboru postupne a nic nepomohlo, vsude radej pripojte tam ten soubor ale jak ho tam amm pripojit kdyz to stejne na to nereaguje?
#include "main.moc"ted me to hlasi pro Kontakt List v mainwindow a uz sem skousel davat include "mainwindow.moc" i kontaktlist.moc (podle nazvu cpp) snad vsude kde se dalo na konce souboru postupne a nic nepomohlo, vsude radej pripojte tam ten soubor ale jak ho tam amm pripojit kdyz to stejne na to nereaguje? jeste doplnuji Qt creator je tvurce
Tiskni
Sdílej: