本文整理汇总了C++中QThread::start方法的典型用法代码示例。如果您正苦于以下问题:C++ QThread::start方法的具体用法?C++ QThread::start怎么用?C++ QThread::start使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QThread
的用法示例。
在下文中一共展示了QThread::start方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
int main(int argc, char *argv[])
{
QmlProfilerApplication app(argc, argv);
app.parseArguments();
if (app.isInteractive()) {
QThread listenerThread;
CommandListener listener;
listener.moveToThread(&listenerThread);
QObject::connect(&listener, SIGNAL(command(QString)), &app, SLOT(userCommand(QString)));
QObject::connect(&app, SIGNAL(readyForCommand()), &listener, SLOT(readCommand()));
listenerThread.start();
int exitValue = app.exec();
listenerThread.quit();
// wait for listener to exit
listenerThread.wait();
return exitValue;
} else {
int exitValue = app.exec();
app.outputData();
return exitValue;
}
}
示例2: startExecutor
void RPCConsole::startExecutor()
{
QThread* thread = new QThread;
RPCExecutor *executor = new RPCExecutor();
executor->moveToThread(thread);
// Notify executor when thread started (in executor thread)
connect(thread, SIGNAL(started()), executor, SLOT(start()));
// Replies from executor object must go to this object
connect(executor, SIGNAL(reply(int,QString)), this, SLOT(message(int,QString)));
// Requests from this object must go to executor
connect(this, SIGNAL(cmdRequest(QString)), executor, SLOT(request(QString)));
// On stopExecutor signal
// - queue executor for deletion (in execution thread)
// - quit the Qt event loop in the execution thread
connect(this, SIGNAL(stopExecutor()), executor, SLOT(deleteLater()));
connect(this, SIGNAL(stopExecutor()), thread, SLOT(quit()));
// Queue the thread for deletion (in this thread) when it is finished
connect(thread, SIGNAL(finished()), thread, SLOT(deleteLater()));
// Default implementation of QThread::run() simply spins up an event loop in the thread,
// which is what we want.
thread->start();
}
示例3: startSegmentation
void HLSManager::startSegmentation()
{
qDebug() << "Initializing HSL manager...";
config_info config;
memset(&config, 0, sizeof(config_info));
config.segment_length = m_segmentLength;
config.temp_directory = (char *)malloc(sizeof(qPrintable(m_tempDirectory)));
strcpy((char *)config.temp_directory, qPrintable(m_tempDirectory));
config.filename_prefix = (char *)malloc(sizeof(qPrintable(m_filenamePrefix)));
strcpy((char *)config.filename_prefix, qPrintable(m_filenamePrefix));
config.encoding_profile = (char *)malloc(sizeof(qPrintable(m_encodingProfile)));
strcpy((char *)config.encoding_profile, qPrintable(m_encodingProfile));
config.input_filename = (char *)malloc(sizeof(qPrintable(m_inputFilename)));
strcpy((char *)config.input_filename, qPrintable(m_inputFilename));
config.pmt_pid = pids.value(PMT_PID);
config.video_pid = pids.value(VIDEO_PID);
config.audio_pid = pids.value(AUDIO_PID);
m_segmenter = new Segmenter();
m_segmenter->configure(m_adapter_no, config);
#ifdef USING_DEVICE
m_segmenter->setDtvDevice(m_dtv_device);
#endif
connect(m_segmenter, SIGNAL(segmentIndexChanged(int,double)), this, SLOT(onSegmentIndexChanged(int,double)));
QThread* thread = new QThread();
m_segmenter->moveToThread(thread);
connect(thread, SIGNAL(started()), m_segmenter, SLOT(process()));
connect(m_segmenter, SIGNAL(reportExitCode(int)), this, SLOT(onSegmenterExitCode(int)));
connect(m_segmenter, SIGNAL(finished()), thread, SLOT(quit()));
connect(m_segmenter, SIGNAL(finished()), m_segmenter, SLOT(deleteLater()));
connect(thread, SIGNAL(finished()), thread, SLOT(deleteLater()));
thread->start();
}
示例4: setEnabled
void Overlay::setEnabled(int status){
if (status==2){
worker = new OverlayWorker();
QThread* workThread = new QThread();
worker->moveToThread(workThread);
workThread->start();
if (ui->radioArray->isChecked()){ //mask from array
worker->setMethod(0);
} else {
worker->setMethod(1);
}
worker->start(buffer, ui->outputNumber->value(), ui->inputA->value(), ui->inputOver->value());
} else {
delete worker;
}
}
示例5: initServer
//.........这里部分代码省略.........
}
settings->endArray();
}
updateLoginMessage();
maxGameInactivityTime = settings->value("game/max_game_inactivity_time").toInt();
maxPlayerInactivityTime = settings->value("game/max_player_inactivity_time").toInt();
maxUsersPerAddress = settings->value("security/max_users_per_address").toInt();
messageCountingInterval = settings->value("security/message_counting_interval").toInt();
maxMessageCountPerInterval = settings->value("security/max_message_count_per_interval").toInt();
maxMessageSizePerInterval = settings->value("security/max_message_size_per_interval").toInt();
maxGamesPerUser = settings->value("security/max_games_per_user").toInt();
try { if (settings->value("servernetwork/active", 0).toInt()) {
qDebug() << "Connecting to ISL network.";
const QString certFileName = settings->value("servernetwork/ssl_cert").toString();
const QString keyFileName = settings->value("servernetwork/ssl_key").toString();
qDebug() << "Loading certificate...";
QFile certFile(certFileName);
if (!certFile.open(QIODevice::ReadOnly))
throw QString("Error opening certificate file: %1").arg(certFileName);
QSslCertificate cert(&certFile);
#if QT_VERSION < 0x050000
if (!cert.isValid())
throw(QString("Invalid certificate."));
#else
const QDateTime currentTime = QDateTime::currentDateTime();
if(currentTime < cert.effectiveDate() ||
currentTime > cert.expiryDate() ||
cert.isBlacklisted())
throw(QString("Invalid certificate."));
#endif
qDebug() << "Loading private key...";
QFile keyFile(keyFileName);
if (!keyFile.open(QIODevice::ReadOnly))
throw QString("Error opening private key file: %1").arg(keyFileName);
QSslKey key(&keyFile, QSsl::Rsa, QSsl::Pem, QSsl::PrivateKey);
if (key.isNull())
throw QString("Invalid private key.");
QMutableListIterator<ServerProperties> serverIterator(serverList);
while (serverIterator.hasNext()) {
const ServerProperties &prop = serverIterator.next();
if (prop.cert == cert) {
serverIterator.remove();
continue;
}
QThread *thread = new QThread;
thread->setObjectName("isl_" + QString::number(prop.id));
connect(thread, SIGNAL(finished()), thread, SLOT(deleteLater()));
IslInterface *interface = new IslInterface(prop.id, prop.hostname, prop.address.toString(), prop.controlPort, prop.cert, cert, key, this);
interface->moveToThread(thread);
connect(interface, SIGNAL(destroyed()), thread, SLOT(quit()));
thread->start();
QMetaObject::invokeMethod(interface, "initClient", Qt::BlockingQueuedConnection);
}
const int networkPort = settings->value("servernetwork/port", 14747).toInt();
qDebug() << "Starting ISL server on port" << networkPort;
islServer = new Servatrice_IslServer(this, cert, key, this);
if (islServer->listen(QHostAddress::Any, networkPort))
qDebug() << "ISL server listening.";
else
throw QString("islServer->listen()");
} } catch (QString error) {
qDebug() << "ERROR --" << error;
return false;
}
pingClock = new QTimer(this);
connect(pingClock, SIGNAL(timeout()), this, SIGNAL(pingClockTimeout()));
pingClock->start(1000);
int statusUpdateTime = settings->value("server/statusupdate").toInt();
statusUpdateClock = new QTimer(this);
connect(statusUpdateClock, SIGNAL(timeout()), this, SLOT(statusUpdate()));
if (statusUpdateTime != 0) {
qDebug() << "Starting status update clock, interval " << statusUpdateTime << " ms";
statusUpdateClock->start(statusUpdateTime);
}
const int numberPools = settings->value("server/number_pools", 1).toInt();
gameServer = new Servatrice_GameServer(this, numberPools, servatriceDatabaseInterface->getDatabase(), this);
gameServer->setMaxPendingConnections(1000);
const int gamePort = settings->value("server/port", 4747).toInt();
qDebug() << "Starting server on port" << gamePort;
if (gameServer->listen(QHostAddress::Any, gamePort))
qDebug() << "Server listening.";
else {
qDebug() << "gameServer->listen(): Error.";
return false;
}
return true;
}
示例6: testGetEventsTimeTypeFilter
void CallModelTest::testGetEventsTimeTypeFilter()
{
QFETCH(bool, useThread);
deleteAll();
QThread modelThread;
//initTestCase ==> 3 dialled calls, 2 Received calls, 3 Missed Calls already added
CallModel model;
watcher.setModel(&model);
if (useThread) {
modelThread.start();
model.setBackgroundThread(&modelThread);
}
QDateTime when = QDateTime::currentDateTime();
//3 dialled
addTestEvent( model, Event::CallEvent, Event::Outbound, ACCOUNT1, -1, "", false, false, when );
addTestEvent( model, Event::CallEvent, Event::Outbound, ACCOUNT1, -1, "", false, false, when.addSecs(5) );
addTestEvent( model, Event::CallEvent, Event::Outbound, ACCOUNT1, -1, "", false, false, when.addSecs(10) );
QVERIFY(watcher.waitForAdded(3));
//2 received
addTestEvent( model, Event::CallEvent, Event::Inbound, ACCOUNT1, -1, "", false, false, when );
addTestEvent( model, Event::CallEvent, Event::Inbound, ACCOUNT1, -1, "", false, false, when.addSecs(5) );
QVERIFY(watcher.waitForAdded(2));
//3 missed
addTestEvent( model, Event::CallEvent, Event::Inbound, ACCOUNT1, -1, "", false, true, when );
addTestEvent( model, Event::CallEvent, Event::Inbound, ACCOUNT1, -1, "", false, true, when.addSecs(5) );
addTestEvent( model, Event::CallEvent, Event::Inbound, ACCOUNT1, -1, "", false, true, when.addSecs(10) );
QVERIFY(watcher.waitForAdded(3));
QDateTime time = when;
//model.setQueryMode(EventModel::SyncQuery);
model.setTreeMode(false);
QVERIFY(model.setFilter(CallModel::SortByTime, CallEvent::DialedCallType, time));
QVERIFY(model.getEvents());
QVERIFY(watcher.waitForModelReady());
int numEventsRet = model.rowCount();
QCOMPARE(numEventsRet, 3);
Event e1 = model.event(model.index(0,0));
Event e2 = model.event(model.index(1,0));
Event e3 = model.event(model.index(2,0));
QVERIFY(e1.isValid());
QVERIFY(e2.isValid());
QVERIFY(e3.isValid());
QVERIFY(e1.direction() == Event::Outbound);
QVERIFY(e2.direction() == Event::Outbound);
QVERIFY(e3.direction() == Event::Outbound);
QVERIFY(model.setFilter(CallModel::SortByTime, CallEvent::MissedCallType, time));
QVERIFY(watcher.waitForModelReady());
QVERIFY(model.rowCount() == 3);
QVERIFY(model.setFilter(CallModel::SortByTime, CallEvent::ReceivedCallType, time));
qDebug() << time;
QVERIFY(watcher.waitForModelReady());
for (int i = 0; i < model.rowCount(); i++) {
qDebug() << model.event(model.index(i, 0)).toString();
}
QVERIFY(model.rowCount() == 2);
/**
* testing to check for adding events with wrong filters
*/
time = when.addSecs(-60*5);
int numEventsGot = 0;
//adding one more received but 5 minutes before the set time filter
addTestEvent( model, Event::CallEvent, Event::Inbound, ACCOUNT1, -1, "", false, false, time );
QVERIFY(watcher.waitForAdded());
QVERIFY(model.rowCount() == 2); //event should not be added to model, so rowCount should remain same for received calls
//filter is set for received call, try to add missed and dialled calls with correct time filter
addTestEvent( model, Event::CallEvent, Event::Inbound, ACCOUNT1, -1, "", false, true, when );
QVERIFY(watcher.waitForAdded());
numEventsGot = model.rowCount();
QVERIFY(numEventsGot == 2); //event should not be added to model, so rowCount should remain same which was for received calls
addTestEvent( model, Event::CallEvent, Event::Outbound, ACCOUNT1, -1, "", false, false, when );
QVERIFY(watcher.waitForAdded());
numEventsGot = model.rowCount();
QVERIFY(numEventsGot == 2); //event should not be added to model, so rowCount should remain same which was for received calls
/**
** testing to check for getting events after he time when all events addition was complete
*/
//Trying to get events after 5 minutes after the first event was added
time = when.addSecs(60*5);
QVERIFY(model.setFilter(CallModel::SortByTime, CallEvent::ReceivedCallType, time));
QVERIFY(watcher.waitForModelReady());
QVERIFY(model.rowCount() == 0);
qDebug() << "wait thread";
modelThread.quit();
modelThread.wait(3000);
qDebug() << "done";
}
示例7: install
//.........这里部分代码省略.........
if (utils->getOSMCDev() == "rbp1") { device->setRoot("/dev/sda1"); }
if (utils->getOSMCDev() == "rbp2") { device->setRoot("/dev/sda1"); }
if (utils->getOSMCDev() == "vero1") { device->setRoot("/dev/sda1"); }
for (int i = 0; i <= 60; i++)
{
ui->statusLabel->setText(tr("USB install:") + " " + QString::number(60 - i) + " " + ("seconds to remove device before data loss"));
qApp->processEvents();
system("/bin/sleep 1");
}
}
}
/* Bring up network if using NFS */
if (useNFS)
{
logger->addLine("NFS installation chosen, must bring up network");
nw = new Network();
nw->setIP(preseed->getStringValue("network/ip"));
nw->setMask(preseed->getStringValue("network/mask"));
nw->setGW(preseed->getStringValue("network/gw"));
nw->setDNS1(preseed->getStringValue("network/dns1"));
nw->setDNS2(preseed->getStringValue("network/dns2"));
if (! nw->isDefined())
{
logger->addLine("Either network preseed definition incomplete, or user wants DHCP");
nw->setAuto();
}
logger->addLine("Attempting to bring up eth0");
ui->statusLabel->setText(tr("Configuring Network"));
nw->bringUp();
}
}
else
{
logger->addLine("No preseed file was found");
}
/* If !nfs, create necessary partitions */
if (! useNFS)
{
logger->addLine("Creating root partition");
ui->statusLabel->setText(tr("Formatting device"));
qApp->processEvents(); /* Force GUI update */
QString rootBase = device->getRoot();
if (rootBase.contains("mmcblk"))
rootBase.chop(2);
else
rootBase.chop(1);
logger->addLine("From a root partition of " + device->getRoot() + ", I have deduced a base device of " + rootBase);
if (device->hasRootChanged() && utils->getOSMCDev() != "atv")
{
logger->addLine("Must mklabel as root fs is on another device");
utils->mklabel(rootBase, false);
utils->mkpart(rootBase, "ext4", "4096s", "100%");
utils->fmtpart(device->getRoot(), "ext4");
}
else
{
int size = utils->getPartSize(rootBase, (device->getBootFS() == "vfat" ? "fat32" : "ext4"));
if (size == -1)
{
logger->addLine("Issue getting size of device");
haltInstall(tr("cannot work out partition size"));
return;
}
logger->addLine("Determined " + QString::number(size) + " MB as end of first partition");
utils->mkpart(rootBase, "ext4", QString::number(size + 2) + "M", "100%");
utils->fmtpart(device->getRoot(), "ext4");
}
}
/* Mount root filesystem */
if (useNFS)
bc = new BootloaderConfig(device, nw, utils, logger);
else
bc = new BootloaderConfig(device, NULL, utils, logger);
logger->addLine("Mounting root");
if ( ! utils->mountPartition(device, MNT_ROOT))
{
logger->addLine("Error occured trying to mount root of " + device->getRoot());
haltInstall(tr("can't mount root"));
return;
}
if (useNFS)
system("rm -rf /mnt/root/*"); /* BusyBox tar does not like overwrites. Clear nfsroot first */
/* Extract root filesystem */
ui->statusLabel->setText(tr("Installing files"));
logger->addLine("Extracting files to root filesystem");
ui->statusProgressBar->setMinimum(0);
ui->statusProgressBar->setMaximum(100);
QThread* thread = new QThread(this);
ExtractWorker *worker = new ExtractWorker(fileSystem.fileName(), MNT_ROOT, logger);
worker->moveToThread(thread);
connect(thread, SIGNAL(started()), worker, SLOT(extract()));
connect(worker, SIGNAL(progressUpdate(unsigned)), this, SLOT(setProgress(unsigned)));
connect(worker, SIGNAL(error(QString)), this, SLOT(haltInstall(QString)));
connect(worker, SIGNAL(finished()), thread, SLOT(quit()));
connect(worker, SIGNAL(finished()), worker, SLOT(deleteLater()));
connect(thread, SIGNAL(finished()), thread, SLOT(deleteLater()));
connect(thread, SIGNAL(finished()), this, SLOT(finished()));
thread->start();
}
示例8: main
extern "C" int qtmn(int argc, char** argv)
{
#else
int main(int argc, char **argv)
{
#endif
try {
QApplication app(argc, argv);
QSurfaceFormat fmt;
fmt.setDepthBufferSize(24);
if (QCoreApplication::arguments().contains(QStringLiteral("--multisample")))
fmt.setSamples(4);
if (QCoreApplication::arguments().contains(QStringLiteral("--coreprofile"))) {
fmt.setVersion(3, 2);
fmt.setProfile(QSurfaceFormat::CoreProfile);
}
QSurfaceFormat::setDefaultFormat(fmt);
auto logger = gatherer::graphics::Logger::create("preview-qt");
logger->info("Start");
// Should be created in heap, ownership taken by parent widget
GLWidget *glWidget = new GLWidget; // Note: moved creation output of Window for signal connection:
#if defined(__ANDROID__)
const bool synth = true; // Camera not working on Android (yet)
#else
const bool synth = false;
#endif
VideoCapture capture(0, synth);
MainWindow mainWindow(glWidget, capture);
mainWindow.resize(mainWindow.sizeHint());
int desktopArea = QApplication::desktop()->width() * QApplication::desktop()->height();
int widgetArea = mainWindow.width() * mainWindow.height();
if (((float)widgetArea / (float)desktopArea) < 0.75f)
mainWindow.show();
else
mainWindow.showMaximized();
// ((((((((((((((((( bEGIN )))))))))))))))))
QThread captureThread;
captureThread.start();
capture.moveToThread(&captureThread);
qRegisterMetaType< cv::Mat >("cv::Mat");
QObject::connect(&capture, &VideoCapture::started, [](){ qDebug() << "capture started"; });
glWidget->connect(&capture, SIGNAL(matReady(cv::Mat)), SLOT(setImage(cv::Mat)));
// ((((((((((((((((( eND )))))))))))))))))
int rc = app.exec();
captureThread.quit();
captureThread.wait();
return rc;
}
catch (const std::exception& exc) {
std::cerr << "Exception catched: " << exc.what() << std::endl;
return EXIT_FAILURE;
}
catch (...) {
std::cerr << "Unknown exception catched" << std::endl;
return EXIT_FAILURE;
}
}
示例9: getScanFromFile
void MainWindow::getScanFromFile()
{
//TO DO - Use native dialog once bug is resolved with multiple windows and the file browser not closing
inDir = QFileDialog::getExistingDirectory(NULL, "Open Directory",QDir::homePath(),QFileDialog::DontUseNativeDialog | QFileDialog::DontResolveSymlinks);
if (inDir != ""){
ui->pushButtonSaveScan->setEnabled(false);
//ProcessScan scanner(inDir);
ProcessScan *scanner = new ProcessScan(inDir);
//processscan::ProcessScan scanner;
if (pointcloud != NULL)
delete pointcloud;
pointcloud = new pointCloud;
// Make a connection to allow the ScanDraiD scanner object return data.
connect(scanner, SIGNAL(percentageComplete(QString, int)), this, SLOT(updateStatusBar(QString,int)));
connect(scanner, SIGNAL(percentageComplete(QString, int)), ui->GLScanWidgetui, SLOT(redraw()));
connect(scanner, SIGNAL(addPointToCloud(float,float,float)), pointcloud, SLOT(addPoint(float,float,float)));
scanner->setCameraHFov(getSetting("CAMERA_HFOV").toFloat(), true);
scanner->setCameraVFov(getSetting("CAMERA_VFOV").toFloat());
scanner->setCameraDistance(getSetting("CAMERA_DISTANCE").toFloat());
scanner->setLaserOffset(getSetting("LASER_OFFSET").toFloat());
scanner->setHorizontalAverage(getSetting("HORIZ_AVG").toInt());
scanner->setVerticalAverage(getSetting("VERT_AVG").toInt());
scanner->setFrameSkip(getSetting("FRAME_SKIP").toInt());
scanner->setLineSkip(getSetting("LINE_SKIP").toInt());
//QThread *process = new QThread;
//scanner.moveToThread(process);
//connect(process, SIGNAL(started()), &scanner, SLOT(start()));
//process->start();
QThread* thread = new QThread;
//Worker* worker = new Worker();
scanner->moveToThread(thread);
//connect(scanner, SIGNAL(error(QString)), this, SLOT(errorString(QString)));
connect(thread, SIGNAL(started()), scanner, SLOT(start()));
connect(scanner, SIGNAL(finished()), thread, SLOT(quit()));
connect(scanner, SIGNAL(finished()), scanner, SLOT(deleteLater()));
connect(thread, SIGNAL(finished()), thread, SLOT(deleteLater()));
thread->start();
//scanner->start();
//Move this from here. it doesnt work because of the thread
updateStatusBar("Scan Complete", 3000);
ui->pushButtonSaveScan->setEnabled(true);
//qDebug() << "Number of points: " << pointcloud->cloudSize();
ui->GLScanWidgetui->setCloud(pointcloud);
//pointcloud->refineCloud();
}
示例10: QMainWindow
MainWindow::MainWindow(CWizDatabaseManager& dbMgr, QWidget *parent)
: QMainWindow(parent)
, m_core(new ICore(this))
, m_dbMgr(dbMgr)
, m_progress(new CWizProgressDialog(this))
, m_settings(new CWizUserSettings(dbMgr.db()))
, m_sync(new CWizKMSyncThread(dbMgr.db(), this))
, m_syncTimer(new QTimer(this))
, m_searchIndexer(new CWizSearchIndexer(m_dbMgr))
, m_upgrade(new CWizUpgrade())
//, m_certManager(new CWizCertManager(*this))
, m_cipherForm(new CWizUserCipherForm(*this, this))
, m_objectDownloaderHost(new CWizObjectDataDownloaderHost(dbMgr, this))
//, m_avatarDownloaderHost(new CWizUserAvatarDownloaderHost(dbMgr.db().GetAvatarPath(), this))
, m_transitionView(new CWizDocumentTransitionView(this))
#ifndef Q_OS_MAC
, m_labelNotice(NULL)
, m_optionsAction(NULL)
#endif
#ifdef Q_OS_MAC
, m_toolBar(new CWizMacToolBar(this))
#else
, m_toolBar(new QToolBar("Main", this))
#endif
, m_menuBar(new QMenuBar(this))
, m_statusBar(new CWizStatusBar(*this, this))
, m_actions(new CWizActions(*this, this))
, m_category(new CWizCategoryView(*this, this))
, m_documents(new CWizDocumentListView(*this, this))
, m_noteList(NULL)
, m_msgList(new MessageListView(this))
, m_documentSelection(new CWizDocumentSelectionView(*this, this))
, m_doc(new CWizDocumentView(*this, this))
, m_history(new CWizDocumentViewHistory())
, m_animateSync(new CWizAnimateAction(*this, this))
, m_bRestart(false)
, m_bLogoutRestart(false)
, m_bUpdatingSelection(false)
{
connect(qApp, SIGNAL(aboutToQuit()), SLOT(on_application_aboutToQuit()));
connect(qApp, SIGNAL(lastWindowClosed()), qApp, SLOT(quit())); // Qt bug: Qt5 bug
qApp->installEventFilter(this);
//CWizCloudPool::instance()->init(&m_dbMgr);
// search and full text search
QThread *threadFTS = new QThread();
m_searchIndexer->moveToThread(threadFTS);
threadFTS->start(QThread::IdlePriority);
// upgrade check
QThread *thread = new QThread();
m_upgrade->moveToThread(thread);
connect(m_upgrade, SIGNAL(checkFinished(bool)), SLOT(on_checkUpgrade_finished(bool)));
thread->start(QThread::IdlePriority);
// syncing thread
connect(m_sync, SIGNAL(processLog(const QString&)), SLOT(on_syncProcessLog(const QString&)));
connect(m_sync, SIGNAL(syncFinished(int, QString)), SLOT(on_syncDone(int, QString)));
connect(m_syncTimer, SIGNAL(timeout()), SLOT(on_actionAutoSync_triggered()));
int nInterval = m_settings->syncInterval();
if (nInterval == 0) {
m_syncTimer->setInterval(15 * 60 * 1000); // default 15 minutes
} else {
m_syncTimer->setInterval(nInterval * 60 * 1000);
}
if (nInterval != -1) {
QTimer::singleShot(3 * 1000, this, SLOT(on_actionAutoSync_triggered()));
}
// misc settings
//m_avatarDownloaderHost->setDefault(::WizGetSkinResourcePath(userSettings().skin()) + "avatar_default.png");
// GUI
initActions();
initMenuBar();
initToolBar();
initClient();
setWindowTitle(tr("WizNote"));
restoreStatus();
client()->hide();
#ifdef Q_OS_MAC
setupFullScreenMode(this);
#endif // Q_OS_MAC
WizService::NoteComments::init();
}
示例11: while
void AssignmentClient::readPendingDatagrams() {
auto nodeList = DependencyManager::get<NodeList>();
QByteArray receivedPacket;
HifiSockAddr senderSockAddr;
while (nodeList->getNodeSocket().hasPendingDatagrams()) {
receivedPacket.resize(nodeList->getNodeSocket().pendingDatagramSize());
nodeList->getNodeSocket().readDatagram(receivedPacket.data(), receivedPacket.size(),
senderSockAddr.getAddressPointer(), senderSockAddr.getPortPointer());
if (nodeList->packetVersionAndHashMatch(receivedPacket)) {
if (packetTypeForPacket(receivedPacket) == PacketTypeCreateAssignment) {
qDebug() << "Received a PacketTypeCreateAssignment - attempting to unpack.";
// construct the deployed assignment from the packet data
_currentAssignment = AssignmentFactory::unpackAssignment(receivedPacket);
if (_currentAssignment) {
qDebug() << "Received an assignment -" << *_currentAssignment;
// switch our DomainHandler hostname and port to whoever sent us the assignment
nodeList->getDomainHandler().setSockAddr(senderSockAddr, _assignmentServerHostname);
nodeList->getDomainHandler().setAssignmentUUID(_currentAssignment->getUUID());
qDebug() << "Destination IP for assignment is" << nodeList->getDomainHandler().getIP().toString();
// start the deployed assignment
QThread* workerThread = new QThread;
workerThread->setObjectName("ThreadedAssignment Worker");
connect(workerThread, &QThread::started, _currentAssignment.data(), &ThreadedAssignment::run);
// Once the ThreadedAssignment says it is finished - we ask it to deleteLater
// This is a queued connection so that it is put into the event loop to be processed by the worker
// thread when it is ready.
connect(_currentAssignment.data(), &ThreadedAssignment::finished, _currentAssignment.data(),
&ThreadedAssignment::deleteLater, Qt::QueuedConnection);
// once it is deleted, we quit the worker thread
connect(_currentAssignment.data(), &ThreadedAssignment::destroyed, workerThread, &QThread::quit);
// have the worker thread remove itself once it is done
connect(workerThread, &QThread::finished, workerThread, &QThread::deleteLater);
// once the worker thread says it is done, we consider the assignment completed
connect(workerThread, &QThread::destroyed, this, &AssignmentClient::assignmentCompleted);
_currentAssignment->moveToThread(workerThread);
// move the NodeList to the thread used for the _current assignment
nodeList->moveToThread(workerThread);
// let the assignment handle the incoming datagrams for its duration
disconnect(&nodeList->getNodeSocket(), 0, this, 0);
connect(&nodeList->getNodeSocket(), &QUdpSocket::readyRead, _currentAssignment.data(),
&ThreadedAssignment::readPendingDatagrams);
// Starts an event loop, and emits workerThread->started()
workerThread->start();
} else {
qDebug() << "Received an assignment that could not be unpacked. Re-requesting.";
}
} else if (packetTypeForPacket(receivedPacket) == PacketTypeStopNode) {
if (senderSockAddr.getAddress() == QHostAddress::LocalHost ||
senderSockAddr.getAddress() == QHostAddress::LocalHostIPv6) {
qDebug() << "AssignmentClientMonitor at" << senderSockAddr << "requested stop via PacketTypeStopNode.";
QCoreApplication::quit();
} else {
qDebug() << "Got a stop packet from other than localhost.";
}
} else {
// have the NodeList attempt to handle it
nodeList->processNodeData(senderSockAddr, receivedPacket);
}
}
}
}
示例12: current
MainWidget::MainWidget( QWidget *parent )
: QSplitter( Qt::Horizontal, parent )
, mpKryptonite( new Kryptonite() )
, mpAmazonDE( new KryptoniteJobCoverAmazonDE( mpKryptonite ) )
, mpDiscogs( new KryptoniteJobCoverDiscogs( mpKryptonite ) )
, mpLayout( new QGridLayout( this ) )
, mpFileSysTree( new QTreeView( this ) )
, mpFileSysModel( new QFileSystemModel( this ) )
, mpLineEdit( new QLineEdit( this ) )
, mpFollowPartyman( new QCheckBox( tr("Follow Partyman"), this ) )
, mpCopyBuffer( new QPushButton( tr("Copy debug buffer to clipboard"), this ) )
, mpImage( new DropImageWidget( this ) )
, mpInfo( new QListWidget( this ) )
, mpSignalMapper( new QSignalMapper( this ) )
, mDataMap()
, mCacheMap()
, mDebugData()
{
mpKryptonite->setObjectName( "Downloader");
mpAmazonDE->setObjectName( "Amazon" );
mpDiscogs->setObjectName( "Discogs" );
mpFileSysTree->setObjectName( "FileSysTree" );
mpFileSysModel->setObjectName( "FileSysModel" );
mpLineEdit->setObjectName( "LineInput" );
mpFollowPartyman->setObjectName( "FollowPartyman" );
mpFollowPartyman->setChecked( true );
mpCopyBuffer->setObjectName( "CopyBuffer" );
mpImage->setObjectName( "Image" );
mpInfo->setObjectName( "Info" );
QThread *t = new QThread();
connect( qApp, SIGNAL(aboutToQuit()),
t, SLOT(quit()) );
ProxyWidget::setProxy( mpKryptonite->networkAccessManager() );
mpKryptonite->moveToThread( t );
mpAmazonDE->moveToThread( t );
mpDiscogs->moveToThread( t );
t->setObjectName( "DownloadThread" );
t->start();
QWidget *w = 0;
mpFileSysTree->setModel( mpFileSysModel );
mpFileSysModel->setRootPath( "/" );
mpFileSysModel->setFilter( QDir::NoDotAndDotDot | QDir::AllDirs );
const QString current( Settings::value( Settings::RubberbandmanRootDirectory ) );
QModelIndex qmi( mpFileSysModel->index( current ) );
if( qmi.isValid() )
{
mpFileSysTree->setRootIndex( qmi );
mpFileSysTree->setCurrentIndex( mpFileSysModel->index( current ) );
}
mpFileSysTree->header()->hide();
mpFileSysTree->setColumnHidden( 1, true );
mpFileSysTree->setColumnHidden( 2, true );
mpFileSysTree->setColumnHidden( 3, true );
QSplitter *s = new QSplitter( Qt::Vertical, this );
w = new QWidget( this );
QVBoxLayout *v = new QVBoxLayout( w );
v->addWidget( mpFileSysTree );
v->addWidget( mpLineEdit );
QHBoxLayout *h = new QHBoxLayout();
v->addLayout( h );
h->addWidget( mpFollowPartyman );
h->addWidget( mpCopyBuffer );
s->addWidget( w );
w = new QWidget( this );
w->setLayout( mpLayout );
s->addWidget( w );
addWidget( s );
w = new QWidget( this );
v = new QVBoxLayout( w );
v->addWidget( mpImage );
v->addWidget( mpInfo );
addWidget( w );
v->setStretch( 0, 1 );
Satellite *satellite = Satellite::get();
connect( mpImage, SIGNAL(droppedUrl(QUrl)),
this, SLOT(saveImage(QUrl)) );
connect( mpCopyBuffer, SIGNAL(clicked()),
this, SLOT(debugBufferToClipboard()) );
connect( mpLineEdit, SIGNAL(returnPressed()),
this, SLOT(requestFromLine()) );
connect( mpFileSysTree, SIGNAL(clicked(QModelIndex)),
this, SLOT(entryClicked(QModelIndex)) );
connect( mpSignalMapper, SIGNAL(mapped(QWidget*)),
this, SLOT(saveImage(QWidget*)) );
connect( this, SIGNAL(requestSearch(QString)),
mpDiscogs, SLOT(requestList(QString)) );
connect( mpDiscogs, SIGNAL(imageFound(QByteArray,QVariant)),
this, SLOT(addThumbnail(QByteArray,QVariant)) );
connect( mpDiscogs, SIGNAL(imageDownloaded(QByteArray,QVariant)),
this, SLOT(showImage(QByteArray,QVariant)) );
connect( mpDiscogs, SIGNAL(message(QString,QByteArray)),
this, SLOT(message(QString,QByteArray)) );
connect( this, SIGNAL(requestSearch(QString)),
mpAmazonDE, SLOT(requestList(QString)) );
connect( mpAmazonDE, SIGNAL(imageFound(QByteArray,QVariant)),
this, SLOT(addThumbnail(QByteArray,QVariant)) );
connect( mpAmazonDE, SIGNAL(imageDownloaded(QByteArray,QVariant)),
this, SLOT(showImage(QByteArray,QVariant)) );
//.........这里部分代码省略.........
示例13: readPendingDatagrams
void AssignmentClient::readPendingDatagrams() {
NodeList* nodeList = NodeList::getInstance();
static unsigned char packetData[1500];
static qint64 receivedBytes = 0;
static HifiSockAddr senderSockAddr;
while (nodeList->getNodeSocket().hasPendingDatagrams()) {
if ((receivedBytes = nodeList->getNodeSocket().readDatagram((char*) packetData, MAX_PACKET_SIZE,
senderSockAddr.getAddressPointer(),
senderSockAddr.getPortPointer()))
&& packetVersionMatch(packetData)) {
if (_currentAssignment) {
// have the threaded current assignment handle this datagram
QMetaObject::invokeMethod(_currentAssignment, "processDatagram", Qt::QueuedConnection,
Q_ARG(QByteArray, QByteArray((char*) packetData, receivedBytes)),
Q_ARG(HifiSockAddr, senderSockAddr));
} else if (packetData[0] == PACKET_TYPE_DEPLOY_ASSIGNMENT || packetData[0] == PACKET_TYPE_CREATE_ASSIGNMENT) {
if (_currentAssignment) {
qDebug() << "Dropping received assignment since we are currently running one.\n";
} else {
// construct the deployed assignment from the packet data
_currentAssignment = AssignmentFactory::unpackAssignment(packetData, receivedBytes);
qDebug() << "Received an assignment -" << *_currentAssignment << "\n";
// switch our nodelist domain IP and port to whoever sent us the assignment
if (packetData[0] == PACKET_TYPE_CREATE_ASSIGNMENT) {
nodeList->setDomainSockAddr(senderSockAddr);
nodeList->setOwnerUUID(_currentAssignment->getUUID());
qDebug("Destination IP for assignment is %s\n",
nodeList->getDomainIP().toString().toStdString().c_str());
// start the deployed assignment
QThread* workerThread = new QThread(this);
connect(workerThread, SIGNAL(started()), _currentAssignment, SLOT(run()));
connect(_currentAssignment, SIGNAL(finished()), this, SLOT(assignmentCompleted()));
connect(_currentAssignment, SIGNAL(finished()), workerThread, SLOT(quit()));
connect(_currentAssignment, SIGNAL(finished()), _currentAssignment, SLOT(deleteLater()));
connect(workerThread, SIGNAL(finished()), workerThread, SLOT(deleteLater()));
_currentAssignment->moveToThread(workerThread);
// Starts an event loop, and emits workerThread->started()
workerThread->start();
} else {
qDebug("Received a bad destination socket for assignment.\n");
}
}
} else {
// have the NodeList attempt to handle it
nodeList->processNodeData(senderSockAddr, packetData, receivedBytes);
}
}
}
}
示例14: pixmap
PointViewerMainWindow::PointViewerMainWindow(const QGLFormat& format)
: m_progressBar(0),
m_pointView(0),
m_shaderEditor(0),
m_helpDialog(0),
m_logTextView(0),
m_maxPointCount(200*1000*1000), // 200 million
m_geometries(0),
m_ipcServer(0),
m_hookManager(0)
{
#ifndef _WIN32
setWindowIcon(QIcon(":resource/icons/hicolor/256x256/apps/displaz.png"));
#else
// On windows, application icon is set via windows resource file
#endif
setWindowTitle("Displaz");
setAcceptDrops(true);
m_helpDialog = new HelpDialog(this);
m_geometries = new GeometryCollection(this);
connect(m_geometries, SIGNAL(layoutChanged()), this, SLOT(updateTitle()));
connect(m_geometries, SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, SLOT(updateTitle()));
connect(m_geometries, SIGNAL(rowsInserted(QModelIndex,int,int)), this, SLOT(updateTitle()));
connect(m_geometries, SIGNAL(rowsRemoved(QModelIndex,int,int)), this, SLOT(updateTitle()));
//--------------------------------------------------
// Set up file loader in a separate thread
//
// Some subtleties regarding qt thread usage are discussed here:
// http://mayaposch.wordpress.com/2011/11/01/how-to-really-truly-use-qthreads-the-full-explanation
//
// Main point: each QObject has a thread affinity which determines which
// thread its slots will execute on, when called via a connected signal.
QThread* loaderThread = new QThread();
m_fileLoader = new FileLoader(m_maxPointCount);
m_fileLoader->moveToThread(loaderThread);
connect(loaderThread, SIGNAL(finished()), m_fileLoader, SLOT(deleteLater()));
connect(loaderThread, SIGNAL(finished()), loaderThread, SLOT(deleteLater()));
//connect(m_fileLoader, SIGNAL(finished()), this, SIGNAL(fileLoadFinished()));
connect(m_fileLoader, SIGNAL(geometryLoaded(std::shared_ptr<Geometry>, bool, bool)),
m_geometries, SLOT(addGeometry(std::shared_ptr<Geometry>, bool, bool)));
connect(m_fileLoader, SIGNAL(geometryMutatorLoaded(std::shared_ptr<GeometryMutator>)),
m_geometries, SLOT(mutateGeometry(std::shared_ptr<GeometryMutator>)));
loaderThread->start();
//--------------------------------------------------
// Menus
menuBar()->setNativeMenuBar(false); // OS X doesn't activate the native menu bar under Qt5
// File menu
QMenu* fileMenu = menuBar()->addMenu(tr("&File"));
QAction* openAct = fileMenu->addAction(tr("&Open"));
openAct->setToolTip(tr("Open a data set"));
openAct->setShortcuts(QKeySequence::Open);
connect(openAct, SIGNAL(triggered()), this, SLOT(openFiles()));
QAction* addAct = fileMenu->addAction(tr("&Add"));
addAct->setToolTip(tr("Add a data set"));
connect(addAct, SIGNAL(triggered()), this, SLOT(addFiles()));
QAction* reloadAct = fileMenu->addAction(tr("&Reload"));
reloadAct->setStatusTip(tr("Reload point files from disk"));
reloadAct->setShortcut(Qt::Key_F5);
connect(reloadAct, SIGNAL(triggered()), this, SLOT(reloadFiles()));
fileMenu->addSeparator();
QAction* screenShotAct = fileMenu->addAction(tr("Scree&nshot"));
screenShotAct->setStatusTip(tr("Save screen shot of 3D window"));
screenShotAct->setShortcut(Qt::Key_F9);
connect(screenShotAct, SIGNAL(triggered()), this, SLOT(screenShot()));
fileMenu->addSeparator();
QAction* quitAct = fileMenu->addAction(tr("&Quit"));
quitAct->setStatusTip(tr("Exit the application"));
quitAct->setShortcuts(QKeySequence::Quit);
connect(quitAct, SIGNAL(triggered()), this, SLOT(close()));
// View menu
QMenu* viewMenu = menuBar()->addMenu(tr("&View"));
QAction* trackballMode = viewMenu->addAction(tr("Use &Trackball camera"));
trackballMode->setCheckable(true);
trackballMode->setChecked(false);
// Background sub-menu
QMenu* backMenu = viewMenu->addMenu(tr("Set &Background"));
QSignalMapper* mapper = new QSignalMapper(this);
// Selectable backgrounds (svg_names from SVG standard - see QColor docs)
const char* backgroundNames[] = {/* "Display Name", "svg_name", */
"Default", "#3C3232",
"Black", "black",
"Dark Grey", "dimgrey",
"Slate Grey", "#858C93",
"Light Grey", "lightgrey",
"White", "white" };
for(size_t i = 0; i < sizeof(backgroundNames)/sizeof(const char*); i+=2)
{
QAction* backgroundAct = backMenu->addAction(tr(backgroundNames[i]));
QPixmap pixmap(50,50);
QString colName = backgroundNames[i+1];
pixmap.fill(QColor(colName));
QIcon icon(pixmap);
//.........这里部分代码省略.........
示例15: main
Q_DECL_EXPORT int main(int argc, char *argv[])
{
#ifdef Q_OS_LINUX
QApplication::setAttribute(Qt::AA_X11InitThreads, true);
#endif
QApplication a(argc, argv);
QSize res = QApplication::desktop()->screenGeometry().size();
if (res.width() < res.height())
res.transpose();
pixel_xres = res.width();
pixel_yres = res.height();
g_dpi_scale = CalculateDPIScale();
dp_xres = (int)(pixel_xres * g_dpi_scale); dp_yres = (int)(pixel_yres * g_dpi_scale);
net::Init();
#ifdef __SYMBIAN32__
const char *savegame_dir = "E:/PPSSPP/";
const char *assets_dir = "E:/PPSSPP/";
#elif defined(BLACKBERRY)
const char *savegame_dir = "/accounts/1000/shared/misc/";
const char *assets_dir = "app/native/assets/";
#elif defined(MEEGO_EDITION_HARMATTAN)
const char *savegame_dir = "/home/user/MyDocs/PPSSPP/";
QDir myDocs("/home/user/MyDocs/");
if (!myDocs.exists("PPSSPP"))
myDocs.mkdir("PPSSPP");
const char *assets_dir = "/opt/PPSSPP/";
#else
const char *savegame_dir = "./";
const char *assets_dir = "./";
#endif
NativeInit(argc, (const char **)argv, savegame_dir, assets_dir, "BADCOFFEE");
#if !defined(Q_OS_LINUX) || defined(ARM)
MainUI w;
w.resize(pixel_xres, pixel_yres);
#ifdef ARM
w.showFullScreen();
#else
w.show();
#endif
#endif
#ifdef __SYMBIAN32__
// Set RunFast hardware mode for VFPv2.
User::SetFloatingPointMode(EFpModeRunFast);
// Disable screensaver
QSystemScreenSaver *ssObject = new QSystemScreenSaver(&w);
ssObject->setScreenSaverInhibit();
SymbianMediaKeys* mediakeys = new SymbianMediaKeys();
#endif
QThread* thread = new QThread;
MainAudio *audio = new MainAudio();
audio->moveToThread(thread);
QObject::connect(thread, SIGNAL(started()), audio, SLOT(run()));
QObject::connect(thread, SIGNAL(finished()), thread, SLOT(deleteLater()));
thread->start();
int ret = a.exec();
delete audio;
thread->quit();
NativeShutdown();
net::Shutdown();
return ret;
}