Videos from Keynotes, Technical Talks, Qt in Education, Qt in Use and Qt Training
This year’s conference program offered three full days of training, technical sessions and Qt in Use presentations. Whether you are a new Qt user, a Qt pro, CTO or Product Manager, Qt Developer Days features more than 50 technical sessions, demos, hands-on labs, compelling case studies and information on partner services to satisfy all your Qt requirements.
Qt Quick for C++ Developers. For those experienced in Qt and C++, but new to QML.
This presentation will focus on those who already know Qt but want to see what QML changes for them. We will show how Qt developers can use the new C++ APIs to register new types and objects. We will also present guidelines to create hybrid C++/QML applications.
Use cases have become a core part of the requirements analyst’s arsenal. Used well they can bring dramatic increases in customer satisfaction and a whole host of other subtle benefits to software development.
The use case itself is very simple in concept: describe the functionality of the system in terms of interactions between the system and its external interactors. The focus of the use case is system usage, from an external perspective.
Despite this apparent simplicity, requirements analysts frequently struggle to write coherent, consistent use cases that can be used to facilitate development. Often, the use case analysis becomes an exercise in confusion, incomprehension and the dreaded ‘analysis paralysis’.
This article aims to aid use case writers by presenting a set of rules to follow when performing use case analysis. The rules are designed to avoid common pitfalls in the analysis process and lead to a much more coherent set of requirements.
Other parts
QML_SHOW_FRAMERATE variable can be used for performance information. It prints the time spent each frame to the console.
additional info
DEFINE_BOOL_CONFIG_OPTION(frameRateDebug, QML_SHOW_FRAMERATE)
see src/declarative/util/qdeclarativeview.cpp
using:
...
if (frameRateDebug())
{
// do something
}
Also this variable can be set in Qt Creator (see the “Run Environment” subsection in the project’s “Run Settings” tab).
“I am not young enough to know everything.”
Oscar Wilde
Irish dramatist, novelist, & poet (1854 – 1900)
The Quotations Page
Alexander Alexandrovich Stepanov (Russian: Александр Александрович Степанов) (born November 16, 1950 in Moscow) is the primary designer and implementer of the C++ Standard Template Library [1], which he started to develop around 1992 while employed at HP Labs. He had earlier been working for Bell Labs close to Andrew Koenig and tried to convince Bjarne Stroustrup to introduce something like Ada Generics in C++.
Лекция «Наибольшая общая мера последние 2500 лет» (часть 1 и часть 2)
Слайды: англ и рус.
Лекция «Преобразования и их орбиты» (часть 1 и часть 2)
Elements of Programming – (November 3, 2010) Speakers Alexander Stepanov and Paul McJones give a presentation on the book titled “Elements of Programming”. They explain why they wrote and attempt to explain their book. They describe programming as a mathematical discipline and that it is extremely useful and should not be overlooked.
Stepanov’s homepage
Here’s the Vigenere crypto algorithm as suggested by Allan:
function Vigenere(Src, Key : string; Encrypt : boolean) : string;
const
OrdMinChar : integer = Ord('A');
OrdMaxChar : integer = Ord('Z');
IncludeChars : set of char = ['A'..'Z'];
var
CharRangeCount, i, j, KeyLen, KeyInc, SrcOrd, CryptOrd : integer;
SrcA : string;
begin
CharRangeCount := OrdMaxChar - OrdMinChar + 1;
KeyLen := Length(Key);
SetLength(SrcA, Length(Src));
If Encrypt then
begin
// transfer only included characters to SrcA for encryption
j := 1;
for i := 1 to Length(Src) do
begin
if (Src[i] in IncludeChars) then
begin
SrcA[j] := Src[i];
inc(j);
end;
end;
SetLength(SrcA, j - 1);
end;
SetLength(Result, Length(SrcA));
if Encrypt then
begin
// Encrypt to Result
for i := 1 to Length(SrcA) do
begin
SrcOrd := Ord(Src[i]) - OrdMinChar;
KeyInc := Ord(Key[((i - 1 ) mod KeyLen)+ 1]) - OrdMinChar;
CryptOrd := ((SrcOrd + KeyInc) mod CharRangeCount) + OrdMinChar;
Result[i] := Char(CryptOrd);
end;
end;
else
begin
// Decrypt to Result
for i := 1 to Length(SrcA) do
begin
SrcOrd := Ord(Src[i]) - OrdMinChar;
KeyInc := Ord(Key[((i - 1 ) mod KeyLen)+ 1]) - OrdMinChar;
CryptOrd := ((SrcOrd - KeyInc + CharRangeCount)
mod CharRangeCount) + OrdMinChar;
// KeyInc may be larger than SrcOrd
Result[i] := Char(CryptOrd);
end;
end;
end;
class MainWindow : public QMainWindow
{
Q_OBJECT;
public:
MainWindow(QWidget *parent = 0) : QMainWindow(parent)
{
QSettings settings;
restoreGeometry(settings.value("mainWindowGeometry").toByteArray());
// create docs, toolbars, etc...
restoreState(settings.value("mainWindowState").toByteArray());
}
void closeEvent(QCloseEvent *event)
{
QSettings settings;
settings.setValue("mainWindowGeometry", saveGeometry());
settings.setValue("mainWindowState", saveState());
}
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QCoreApplication::setOrganizationDomain("OrgDomain");
QCoreApplication::setOrganizationName("OrgName");
QCoreApplication::setApplicationName("AppName");
QCoreApplication::setApplicationVersion("1.0.0");
MainWindow w;
w.show();
return a.exec();
}
The above code will save and restore window position, size, toolbar visibility, toolbar docking area, dock states, locations and sizes. It saves using QSettings which will store your settings in a platform correct way.
Source
QThread was designed and is intended to be used as an interface or a control point to an operating system thread, not as a place to put code that you want to run in a thread. We object-oriented programmers subclass because we want to extend or specialize the base class functionality. The only valid reasons I can think of for subclassing QThread is to add functionality that QThread doesn’t have, e.g. perhaps providing a pointer to memory to use as the thread’s stack, or possibly adding real-time interfaces/support. Code to download a file, or to query a database, or to do any other kind of processing should not be added to a subclass of QThread; it should be encapsulated in an object of it’s own.
You’re doing it wrong…
// create the producer and consumer and plug them together
Producer producer;
Consumer consumer;
bool bOk = producer.connect(&consumer,
SIGNAL(consumed()),
SLOT(produce()));
Q_ASSERT(bOk);
bOk = consumer.connect(&producer,
SIGNAL(produced(QByteArray *)),
SLOT(consume(QByteArray *)));
Q_ASSERT(bOk);
// they both get their own thread
QThread producerThread;
producer.moveToThread(&producerThread);
QThread consumerThread;
consumer.moveToThread(&consumerThread);
// go!
producerThread.start();
consumerThread.start();
Reference: Threading without the headache or QThread’s no longer abstract (see attached file)
VDI images of pre-installed “Open Source” Operating System distros. Pre-installed virtualbox images ready for you to explore and play with.
- Instantly run another operating system on your desktop in a window, on almost any computer.
- Implement full Linux functionality on an existing Windows Desktop or server.
- Windows XP Tutorial: 7 quick steps to using our VDI’s
- Need a specific Application? Find an Image using the Pre-Installed Applications Index
- A number of Virtual Machines are also available in OVF Appliance” format
Many people don’t think of their command prompt as a particularly useful thing, or even pay it much attention. To me, this is a bit of a shame, as a useful prompt can change the way you use the command line. Well I’ve scoured the Interwebs looking for the best, most useful, or sometimes most amusing bash prompts. Here, in no particular order, are the ones I’d be most likely to use on my computers.
More