本文介绍的是Qt 编程点滴,作为一名新手,我建议必须看一看。编程那些事,只有编程人员自己明白!所以推荐本文。

Qt 编程继续为大家讲解,还是接着文章Qt 编程点滴 初学者必看 (7),继续介绍,说编程那些细节。由于本话题是一节一节为大家介绍的,所以更多内容请看末尾编辑推荐。

Qt 编程点滴 初学者必看 (8)(qt编程指南)  第1张

如何让Qt程序只运行一次:

以下代码在Ubuntu,win下测试通过:

  1. #include
  2. #include
  3. #include
  4. #include
  5. #include
  6. intmain(intargc,char*argv[])
  7. {
  8. QApplicationapp(argc,argv);
  9. QSystemSemaphoresema("JAMKey",1,QSystemSemaphore::Open);
  10. sema.acquire();//在临界区操作共享内存SharedMemory
  11. QSharedMemorymem("SystemObject");//全局对象名
  12. if(!mem.create(1))//如果全局对象以存在则退出
  13. {
  14. qDebug()<sema.release();//如果是Unix系统,会自动释放。
  15. return0;
  16. }
  17. sema.release();//临界区
  18. QLabellabel("Demo");
  19. label.show();
  20. returnapp.exec();//释放栈上的mem对象。
  21. }

打印当前代码行所在的文件与行:

  1. qDebug()<<"所在文件:"<qDebug()<<"所在行:"<
  2. undefinedreferenceto`qInitResources_gui()\\\'
  3. pro文件中,请注意"RESOURCES+="不可写成"RESOURCES=";
  4. *.pro:unix:DEFINES+=__LINUX__
  5. #ifdef__LINUX__
  6. ...
  7. #else
  8. ...
  9. #endif

取得信号对象指针:

  1. QObject*QObject::sender()const
  2. QToolButton*toolBtn=static_cast(sender());

函数申明后面带有const 的函数,函数体里所调用的函数的申明后面肯定也要带有 const

否则,编译不过

请教如何在Qt的pro文件中定义字符串宏在Qtcentre中一位高人的方法得到实现:

  1. DEFINES+=SHARE_DIR=\\\"字符串\\\"

如果使用OObject::tr("你好")对汉字进行赋值,但使用 qDebug()打印时出现乱码,有可能是*.cpp文件编码有误,请把*.cpp文件编码改为UTF-8编码;

  1. error:newtypesmaynotbedefinedinareturntype
  2. error:returntypespecificationforconstructorinvalid

请检查类定义后有没加";"

win下电脑待机方法:

  1. staticHANDLEhToken;
  2. staticTOKEN_PRIVILEGEStp;
  3. staticLUIDluid;
  4. if(::OpenProcessToken(GetCurrentProcess(),
  5. TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,
  6. &hToken))
  7. {
  8. ::LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&luid);
  9. tp.PrivilegeCount=1;
  10. tp.Privileges[0].Luid=luid;
  11. tp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
  12. ::AdjustTokenPrivileges(hToken,false,&tp,sizeof(TOKEN_PRIVILEGES),NULL,NULL);
  13. }
  14. ::SetSystemPowerState(true,true);

改变QMessageBox的大小:,创建一个QMessageBox:

  1. QMessageBoxmsgBox(this);
  2. msgBox.setWindowTitle(tr("MailBoxLocation"));
  3. msgBox.setInformativeText(tr("Youmust.....andsoonandsoforth"));

像这样改变它的大小:

  1. msgbox.setGeometry(intx,inty,intw,inth)
  2. msgbox.resize(intw,inth)

结果什么都没有发生。

原因:QMessageBox::showEvent() 强制将其大小改变成了QT认为比较合适的大小。要改变它的大小可使用下面这种方法

  1. classMyMessageBox:publicQMessageBox{
  2. protected:
  3. voidshowEvent(QShowEvent*event){
  4. QMessageBox::showEvent(event);
  5. setFixedSize(640,480);
  6. }
  7. };

小结:本文主要介绍了在Qt 窗体的使用,通过Qt 编程点滴介绍,也给自己提高了编程过程中需要注意的细节问题,由于本话题是一节一节为大家展现的,所以更多内容,请看编辑推荐。

转载请说明出处
知优网 » Qt 编程点滴 初学者必看 (8)(qt编程指南)

发表评论

您需要后才能发表评论