Search
Categories
Bookmarks

postheadericon error: undefined reference to `vtable for ClassPrihlasit’

Dnes si povímě něco o této chybě, na kterou jsem narazil během vytváření aplikace v QT Creatoru

je na to naprosto jednoduchý recept musí se nainsludovat soubor .moc

Nejdříve jsem to dal nahoru do zdrojače kde máme klasický includy, ale začlo to hlásit ještě více chyb než bylo zdrávo a tak jsem se chvilku po googlil, moc toho nenašel ale po chvilce testování jsem skusil v souboru main.cpp

udělat include #include <main.moc> a dal jsem to úplně dolu na konec souboru na posledni řadek uplně pod všechno a už to začlo fungovat, takže pokud se někdo setkáte s touto chybou , nevahejte a napište si to do spod a uvidíte jak je to jednoduché :-)

postheadericon c++ mysql pomocí Qt4

Dnes si ukážem jak se spojit z c++ s mysql pomocí QT knihoven

#include <iostream>
#include <QApplication>
#include <QLabel>
#include <QString>
#include <QLineEdit>
#include <QPushButton>
#include <QObject>
#include <QtSql/QSqlDatabase>
#include <QtSql/QSqlQuery>
#include <QtSql/QSqlRecord>

 

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“); //zde nastavíme ze chceme mysql , jdou použít i jiní ale pro dnešek potřebujem toto
db.setHostName(„napor_ip“); //zde nastavíme hosta
db.setDatabaseName(„název databáze“); //zde nastavíme jmeno databáze
db.setUserName(„uzivatelské jmeno“); //zde nastavíme uzivatelské jmeno
db.setPassword(„heslo“); //zde nastavíme heslo
db.open(); //toto nám otevre tadabazy

QSqlQuery sql;

sql.prepare( „SELECT id FROM uzivatele“ );
sql.exec();

QSqlRecord rec = sql.record();

int pocet = rec.count();

cout << pocet;

 

Ještě musíme do .pro  napsat QT += sql  Jinak nám to nebude fungovat!!!!

 

QSqlQuery nám pomůže vykonat dotaz do mysql .

zde v kodu si ji vyvoláváme sql.prepare(„dotaz“);  a jak již vidíte promenou sql sme si předtím deklarovaly QSqlQuery sql;

abychom mohli dále pracovat s výsledkem nesmíme zapomenout na parametr exec() bez kterého by nám se nevracel vysledek.

Zde je použito sql.exec() jelikož proměnnou sql již máme nadefinovanou.

QsqlRecord rec = sql.record(); // vytvoříme si možnost pracovani s vysledkem sql dotazu

int pocet = rec.count(); //toto nám načte počet sloupcu v mysql dotazu

count << pocet;  toto nám do terminalu vypíše počet řádků z mysql přikazu

 

///////////////////////////////////////////////////////

Stejným spůsobem se dá připojit i do jiných tipů databází

Stačí jen v QSqlDatabase::addDatabase(„QMYSQL“); QMYSQL nahradit jedním z níže uvedených pro spojení s databázý, kterou potřebujeme

QDB2 IBM DB2
QIBASE Borland InterBase Driver
QMYSQL MySQL Driver
QOCI Oracle Call Interface Driver
QODBC ODBC Driver (includes Microsoft SQL Server)
QPSQL PostgreSQL Driver
QSQLITE SQLite version 3 or above
QSQLITE2 SQLite version 2
QTDS Sybase Adaptive Server

 

 

 

postheadericon Perl proměnné

Dnes si ukážem zápis a definici proměnných v jazyce perl.

 

1. Globální proměnné

our $nazev=“test“;

our nám definuje proměnou $nazev jako globální proměnou, tím pádem ji můžem použít po celém dokumentu.

Samozřejmě ji mužem i behem probíhání scriptu měnit.

2.Lokální

my $nazev=“test“;

my nám definuje proměnou $nazev jako lokální věc a nemužem ji vynášet (používat ) např mimo funkci kde je deklarovaná.

př:

#!/usr/bin/perl
use strict;
use warnings;

my $p;

$p = 3;
print $p; 

 

Používání proměnných

 

my $soucet;

my $cislo1;

my $cislo2;

$soucet = $cislo1 + $cislo2;

print $soucet

například takto můžem proměnné sčítat , popřípadě odčítat, dělit násobyt ….


 

postheadericon Příprava systému os Ubuntu

Dnes si ukážem jak si připravit operační system na používání perl s Qt.

Za předpokladu že perl máme již nainstalován (v zakladu po instalaci operačního systému již je automaticky nainstalován)

Při psaní tohoto článku momentální verze na ubuntu 5.12.4 což můžete zjistit zadáním příkazu do terminálu „perl -v

Nejprve si nainstalujem potřebné věci 

sudo apt-get install build-essential cmake yaml-mode libqtcore4-perl libqtgui4-perl 

Následně na to nainstalujem knihovny QtCore4 a QtGui4 a List::MoreUtils a využijem k tomu programu cpan, který je již nainstalován s perl v základu :)

sudo cpan install QtCore4

, všechny věci můžem nechat v defaultu (vlastní skušenost vždy jsem to jen odentroval) následně čekáme na vyhledání cca i 5-10 minut a pak se plugin začne pomocí cpan instalovat a není zapotřebí žádný zasah.

dále nainstalujem ještě 

sudo cpan install List::MoreUtils

sudo cpan install QtGui4

 

Po zadání těchto příkazů (vše jako sudo uživatel musíme) máme systém připraven na použití perl s QT a můžem začít programovat na této urovni.

Na základní script se podíváme příště, kde si pomocí qt knihovny uděláme jednoduchý grafický formulář.

postheadericon Proč se funkce main() nemůže jmenovat jinak

Existuje velmi pádný důvod proč pojmenovat funkci programu myfirst.cpp jako main:

nemusí to tak být. Každý program jazyka c++ vyžaduje funkci, která  se nazývá main )).

A nemůže to být ani Main() či MAIN().

Vspoměňte si na nutnost dodržovat správé velikosti a pořadí písmen.

Protože program myfirst.cpp má pouze jednu funkci, musí na sebe vzít tuto zodpovědnost ona a být funkcí main(). Vykonávání spuštěného programu jazyka c++ začíná vždy na zacčátku funkce main)).Bez funkce main)) tedy není žádný program úplný a překladač vás upozorní, že jste nedefinovali funkci main().

Samozřejmě jako u všeho existují výjimky.

Například programování pod Windows můžete napsat modul dinamicky vázané knihovny (DLL).To je kod, který mohou používat i ostatní programy windows. Prodože modul DLL není nezávyslí program, nepotřebuje funkci main)).

Také programy pro specializované prostředí, jako jsou ovládací čipy robota, nemusí potřebovat funkci main)).

Ale programy samostatné funkci main() potřebují a právě takovýmito typip programu se v tomto serialu budeme zabývat.

postheadericon HTML

HTML

Tagem <html> začíná a končí celý dokument. Veškerý další obsah musí být uvnitř. Jedná se o značku povinnou.

Tag html nemá žádné atributy.

Tag html je parový znak <html> a ukončovací </html>