小编Str*_*ght的帖子

禁用QDialogs默认关闭按钮(左上角的"十字按钮")?

是否可以禁用/删除对话框左上角的QDialogs默认关闭按钮?

c++ qt qdialog

12
推荐指数
2
解决办法
1万
查看次数

如何使用 QProcess 启动 Shell 脚本?

如何使用 QProcess 启动 Shell 脚本?Shell 脚本中有八个不同的命令,其中一些带有参数,另一些则没有。

我尝试使用(使用 Ubuntu 11.10)启动 Shell 脚本:

QProcess *Prozess = new QProcess();
Prozess->setWorkingDirectory(MainDirectory);
Prozess->start("/bin/sh", QStringList() << "Shell.sh");
Run Code Online (Sandbox Code Playgroud)

但这不起作用,这意味着什么也没有发生。如何使它工作?

c++ bash shell qt qprocess

5
推荐指数
1
解决办法
1万
查看次数

如何在新线程(QThread)中使用进程(QProcess)?

我有以下代码:

 void Processmethod()
{

    QDialog *ProcessMessage = new QDialog;      
    Ui::DialogProcessMessage Dialog;            
    Dialog.setupUi(ProcessMessage);             
    ProcessMessage->setModal(true);
    ProcessMessage->setAttribute(Qt::WA_DeleteOnClose); 
    ProcessMessage->show();

    qApp->processEvents();

    processmethodONE();  
    processmethodTWO();
    processmethodTHREE();                  
}

void processmethodONE()
{
    QString ProcessCommand = "w8 " + blablubli";            

    Prozess.setWorkingDirectory(Path);         //QProcess "Prozess" is globaly defined  
    Prozess.setStandardOutputFile(Path);       //in my class

    QThread* thread = new QThread;
    Prozess.moveToThread(thread);
    Prozess.start(ProcessCommand);


while(!Prozess.waitForFinished(2000))
   {
       std::cerr << "Process running " << std::endl;
   }

QProcess::ExitStatus Status = Prozess.exitStatus(); 

if (Status == 0)
 {
   std::cout << "File created!" << std::endl;
 }
}
Run Code Online (Sandbox Code Playgroud)

在此源代码中,我尝试在某些进程启动之前打开一个弹出对话框。问题是对话框不可点击,但在对话框上我想创建一个按钮来中止正在运行的方法。如您所见,我尝试使用 QThread 在另一个线程中运行进程,但仍然无法单击该对话框。此外,如果我使用“application/x-executable”文件打开我的应用程序(GUI),则在激活上述方法时会丢失对话框内容。我该如何解决这些问题?我哪里错了?你好

c++ qt qprocess qdialog qthread

4
推荐指数
1
解决办法
1万
查看次数

如何从QProcess获取错误代码?

我有一个函数A(),我执行其他八个'子函数',其中包括一个QProcess.如何从所有QProcesses获取返回代码?

例:

void Mainclass::A()
{
    B();
    C();
    // ...
    I();
}

void Mainclass::B() 
{
    QString CommandPath = "PathB";
    QProcess *Process = new QProcess(this);

    Process->setWorkingDirectory(MainDir);
    Process->setStandardOutputFile(MainDir + "/geometries");
    Process->start(CommandPath);
    Process->waitForFinished();
    QProcess::ExitStatus Status = Process->exitStatus(); 

    if (Status == 0)
    {
       std::cout << "App executed!" << std::endl;
    }
}
Run Code Online (Sandbox Code Playgroud)

我发现了这个例子,但是我不了解如何自己实现它,因为我在我的应用程序中使用指针对象.

c++ qt qprocess qt-creator

3
推荐指数
1
解决办法
5255
查看次数

构造函数MyClass(QWidget*parent = 0)中(QWidget*parent = 0)的含义;

只是Qt中常见结构化类的一部分:

class MyClass  :  public QWidget           
{

Q_OBJECT

 public:

   MyClass(QWidget *parent = 0);
.
.
.
}
Run Code Online (Sandbox Code Playgroud)

看构造函数我不明白参数的含义(QWidget *parent = 0)?这是什么意思?

问候

c++ qt constructor

3
推荐指数
1
解决办法
5657
查看次数

QFile :: QFile函数 - >错误:QFile :: QFile(const QFile&)'是私有的

在我的一个方法中,我需要一个QFile对象:

    void GUIsubclassKuehniGUI::LoadDirectory()   
    {
        QString loadedDirectory = QFileDialog::getExistingDirectory(this,
                                                    "/home",tr("Create Directory"),
                                                    QFileDialog::DontResolveSymlinks);
        ui.PathDirectory -> setText(loadedDirectory);

        QFileInfo GeoDat1 = loadedDirectory + "/1_geo.m4";  
        QFileInfo GeoDat2 = loadedDirectory + "/2_geo.m4";         
        QString Value;

        if (GeoDat1.exists() == true)
        {
            QFile GEO = (loadedDirectory + "/1_geo.m4");   // ERROR LINE HERE!

            if(GEO.open(QIODevice::ReadOnly | QIODevice::Text))    
            {
                QTextStream Stream (&GEO); 
                QString Text;
                do
                {
                    Text = Stream.readLine();

                    QString startWith = "start";
                    QString endWith = "stop" ;                                      
                    int start = Text.indexOf(startWith, 0, Qt::CaseInsensitive); 
                    int end = Text.indexOf(endWith, Qt::CaseInsensitive);        

                    if (start != …
Run Code Online (Sandbox Code Playgroud)

c++ qt qt4 qfile

2
推荐指数
1
解决办法
3829
查看次数

如何指定QString :: indexOf方法?

我写了一个源代码,如:

    int main(int argc, char *argv[]) {
        QString x = "start some text here end";
        QString s = "start";
        QString e = "end";
        int start = x.indexOf(s, 0, Qt::CaseInsensitive); 
        int end = x.indexOf(e, Qt::CaseInsensitive); 

        if(start != -1){ // we found it
            QString y = x.mid(start + s.length(), ((end - (start + s.length())) > -1 ? (end - (start + s.length())) : -1)); // if you dont wanna pass in a number less than -1
            or
            QString y = x.mid(start + …
Run Code Online (Sandbox Code Playgroud)

c++ qstring qt indexof

2
推荐指数
1
解决办法
1万
查看次数

变量后的两个括号?

我在一种方法中有这样的东西

    autoPtr<LESModel> LESModel::New   
 95 (
 96  const volVectorField& U,
 97  const surfaceScalarField& phi,
 98  transportModel& transport,
 99  const word& turbulenceModelName
100 )
101 {
     ...
122  dictionaryConstructorTable::iterator cstrIter =                       
123  dictionaryConstructorTablePtr_->find(modelType);
     ...
143  return autoPtr<LESModel>      
144  (
145  cstrIter()(U, phi, transport, turbulenceModelName)
146  ); 
147  }
Run Code Online (Sandbox Code Playgroud)

如果我是对的cstrIter是类的变量dictionaryConstructorTable::iterator(虽然找不到这个类)并且从第143行开始,autoPtr<LesModel>调用构造函数并返回结果.autoPtr<LESModel>因此,构造函数之后的括号应该是参数,因为cstrIter是一个变量,我想知道变量之后的两个括号是什么意思.也许我误读了什么?

c++ constructor parentheses

2
推荐指数
1
解决办法
2075
查看次数

将多行QString转换为单行QString

我有这样的事情:

void ReadFileAndConvert ()
{
    QFile File (Directory + "/here/we/go");

    if(File.open(QIODevice::ReadOnly | QIODevice::Text))
    {
        QTextStream Stream (&File);
        QString Text;

        do
        {
            Text = Stream.readLine();
            Text = Text.simplified();
            // Here I want to convert the multiline QString Text into a oneline QString

// ...
}
Run Code Online (Sandbox Code Playgroud)

QString Text包含一个多行文本,我需要将其转换为在线Text/QString.我怎样才能做到这一点?问候

c++ qstring qt

1
推荐指数
1
解决办法
3419
查看次数

main()方法中包含的类

如果我有一些像这样的代码

    main(int argc, char *argv[])
{
...
#include "Class1.H"
#include "Class2.H"
...

}
Run Code Online (Sandbox Code Playgroud)

通常,main()方法是每个应用程序的起点,main()中的内容将被执行.我是否正确假设main()中包含的所有类的内容将在main()启动时执行?

问候Streight

c++ program-entry-point class include

1
推荐指数
1
解决办法
246
查看次数

在运行时c ++创建具有特定对象名称的未知数量的对象

我想在运行时在main方法中创建一个未知数量的对象,每个对象都有一个特定的对象名.在程序结束之前,对象应该存在(main-method结束).请注意,在我的情况下,对象是Fields.

我想过这样的解决方案:

for ( i=1 ; i <= NumberOfObjects ; i++)
{

if (i==1)
{
MyClass *ObjectName1 = new MyClass();

}

if (i==2)
{
MyClass *ObjectName2 = new MyClass();

}

.   //more if statements for more objects
.
.

} //for loop closed
Run Code Online (Sandbox Code Playgroud)

问题:

  1. 我不认为这个解决方案是好的,因为创建的对象的数量仍然限于for循环中的if语句.更好的解决方案?

  2. 循环中指针的范围:当退出if块时,指针超出范围.之后如何访问"新"创建的对象?

c++ scope loops object-lifetime

1
推荐指数
1
解决办法
1314
查看次数