Integrating QML and C++ provides a variety of opportunities, including the ability to:
1. Separate the user interface code from the application logic code, by implementing the former with QML and JavaScript within QML documents, and the latter with C++
2. Use and invoke some C++ functionality from QML (for example, to invoke your application logic, use a data model implemented in C++, or call some functions in a third-party C++ library)
3. Access functionality in the Qt QML or Qt Quick C++ API (for example, to dynamically generate images using QQuickImageProvider)
4. Implement your own QML object types from C++ — whether for use within your own specific application, or for distribution to others
source: http://doc.qt.io/qt-5/qtqml-cppintegration-overview.html
change qmake version
change qmake version
$ export QTDIR=/qtdir/Qt/5.7/gcc_64
$ export PATH=$QTDIR/bin:$PATH
$ export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
/qtdir = installed qt path
qmake --version
[VMware workstation] solution - disable intall vmware tools (ubuntu)
[VMware workstation] solution - disable intall vmware tools (ubuntu)
1. open terminal$sudo apt-get install open-vm-tools-desktop
2. restart vmware
C Language - extern ?
Extern
- The extern keyword declares a variable or function and specifies that it has external linkage.
- The extern keyword declares a variable or function and specifies that it has external linkage.
C++ Shift operator(KO)
Shift operator- cout, cin 쓸때 앞이나 뒤에 붙이는 연산자
- 표준 라이브러리에 std라는 namespace에 cout이나 cin에 관련된 클래스(istream, ostream)
- C++에서는 쉬프트 연산자도 연산자 오버로딩이 가능
Shift operator overloading
-----------------------------
int main()
{
VALUE val(2,3);
std::cout << val;
return 0;
}
- 표준 라이브러리에 std라는 namespace에 cout이나 cin에 관련된 클래스(istream, ostream)
- C++에서는 쉬프트 연산자도 연산자 오버로딩이 가능
Shift operator overloading
-----------------------------
int main()
{
VALUE val(2,3);
std::cout << val;
return 0;
}
1. VALUE class show x and y value.
2. create val Object. after, std::cout print val .
Error :
cout : - possible normal data type printing
- impossible object of user type
-표준 std의 ostream 클래스에서도 쉬프트 연산에 대한 오버로딩이 정의 되어 있지 않음
따라서, 표준 라이브러리로 객체를 출력하는 일 불가능
-> Solution
overloading of member fucntion
cout is cout.operator
cout.operator<< (val)
val 객체 인자값을 받을 수 있도록 cout 객체에는 operator<< 연산자를 오버로딩 시키면 가능
class VALUE{
private:
int iX;
int iY;
public:
VALUE(int x=0, int y=0):iX(x), iY(y){}
friend ostream& operator<<(ostream& os, const VALUE& val);
};
ostream& operator<<(ostream& os, const VALUE& val)
{
os<<"["<<val.iX<<", "<<val.iY<<"]"<<endl;
return os;
}
int main(void)
{
VALUE val(2, 3);
std::cout<<val;
return 0;
}
member func overloading : CHANGE std::cout<<val; to operator(std::cout, VALUE);
NO logical problem.
How to use #ifdef to C/C++
example
if debug mode
#define _DEBUG "DEBUG"
int testfunc(int x, int y)
{
#ifdef _DEBUG
printf("x=%d, Y=%d", x,y); // if x=1, y =2
#endif
return (x * Y) ;
}
if debug mode
#define _DEBUG "DEBUG"
print x=1, Y=2
after return
if release mode,
not print
return
C/C++ Data type byte range
data type
data type byte
unsigned long DWORD
int BOOL;
unsigned char BYTE;
unsigned short WORD;
unsigned int UINT;
char 1 byte -128 ~ 127
unsigned char 1 byte 0 ~ 255
int8 1 byte -128 ~ 127
int16 2 byte -32,768 to 32,767
unsigned int 2 byte -32,768 to 32,767
(signed) short (int) 2 byte -32,768 to 32,767
unsigned short (int) 2 byte 0 ~ 65,535
int32 4 byte -2,147,483,648 ~ 2,147,483,647
(signed) int 4 byte -2,147,483,648 ~ 2,147,483,647
unsigned int 4 byte 0 ~ 4,294,967,295
(signed) long (int) 4 byte -2,147,483,648 ~ 2,147,483,647
unsigned long (ing) 4 byte -2,147,483,648 ~ 2,147,483,647
int64 8 byte -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
float 4 byte 3.4E +/- 38 (7 digits)
double 8 byte 1.7E +/- 308 (15 digits)
long double 8 byte 1.2E +/- 4932 (19 digits)
Subscribe to:
Posts (Atom)
Apartment Buying Guide 2025: Shocking Red Flags You Should NEVER Ignore!
🏙️ Apartment Buying Guide 2025: Shocking Red Flags You Should NEVER Ignore! 🚨 Are you thinking about buying an apartment in 2025? 🏢 It’...
-
ERROR : Please ensure that your setting of VIRTUAL-RUNTIME_init_manager (systemd) matches the entries enabled in DISTRO_FEATURES kiwon...
-
How the Yocto system works Processing from Developer to Yocto Developer Create .Metadata .Metadata = .bb + .patch ...
-
MySQL workbench Error: Failed to Connect to MySQL at 127.0.0.1:3306 with user name MySQL install error step 1. create connections step 2. ...