QDialog打开时,在QMainWindow上允许关闭按钮

时间:2016-03-16 08:23:26

标签: c++ qt qmainwindow

当QMainWindow打开并且按下按钮时,Qt关闭选项有一个问题点击我打开一个QDialog.Now我的要求是允许关闭选项是QMainWindow来调用QMainWindow的关闭。

现在,当我按下主窗口上的按钮,QDialog打开时,最右上方的关闭按钮在QmainWindow中被禁用。所以请告诉我如何启用。

2 个答案:

答案 0 :(得分:1)

所以,你不想在对话框打开时阻止你的GUI,对吧?

使用无模式对话框:

void EditorWindow::find()
{
    if (!findDialog) {
        findDialog = new FindDialog(this);
        connect(findDialog, SIGNAL(findNext()), this, SLOT(findNext()));
    }

    findDialog->show();
    findDialog->raise();
    findDialog->activateWindow();
}

注意:代码来自Qt文档。请注意,我们没有使用QDialog::exec()方法,而只使用QWidget::show()

答案 1 :(得分:0)

感谢你的支持,你是对的,这是一个无模式的问题

我刚刚按照上面的示例添加:

package com.nusecond.suredeal.app.suredeal.activity;

import android.os.AsyncTask;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.View;
import android.widget.TextView;

import com.nusecond.suredeal.app.R;
import com.nusecond.suredeal.app.suredeal.pojo.ConsumerProfile;

import org.springframework.web.client.RestTemplate;

import java.util.ArrayList;
import java.util.List;

public class MyPreferences extends AppCompatActivity {
    private List<ConsumerProfile>cp = new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my_preferences);
        Log.d("Consumer pojo", "onCreate:");
        new HttpRequestTask().execute();



    }
    private class HttpRequestTask extends AsyncTask<Void, Void, ConsumerProfile>{



        @Override
        protected ConsumerProfile doInBackground(Void... params) {
            try {
                final String url = "http://192.168.1.213:9001/consumer/local/"+LoginFragment.CONSUMEROBJECT.getId();
                RestTemplate restTemplate = new RestTemplate();
                ConsumerProfile cp = restTemplate.getForObject(url, ConsumerProfile.class);
                return cp;
            }catch (Exception e){
                Log.e("MainActivity", e.getMessage(),e );

            }
            return null;
        }
        @Override
        protected void onPostExecute(ConsumerProfile cp){
            super.onPostExecute(cp);
            Log.d("cppppppppppppppppppppp", "onPostExecute: " + cp.getId());

            TextView fname=(TextView)findViewById(R.id.editfname);
            TextView mname=(TextView)findViewById(R.id.editmname);
            TextView lname=(TextView)findViewById(R.id.editlname);
            TextView nname=(TextView)findViewById(R.id.editnname);
            TextView dob=(TextView)findViewById(R.id.editdob);
            TextView status=(TextView)findViewById(R.id.editstatus);
            TextView homeAddress=(TextView)findViewById(R.id.edithomeAddr);
            TextView workAddress=(TextView)findViewById(R.id.editworkAddr);
            TextView income=(TextView)findViewById(R.id.editincome);
            fname.setText(cp.getFirstName());
            mname.setText(cp.getMiddleName());
            lname.setText(cp.getLastName());
            nname.setText(cp.getNickName());
            dob.setText(cp.getDob());
            status.setText(cp.getStatus());
            homeAddress.setText(cp.getHomeAddress());
            workAddress.setText(cp.getWorkAddress());
            income.setText(cp.getIncome());

        }

    }

}

在展示之前我添加了<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="firstName"/> <EditText android:id="@+id/editfname" android:layout_width="match_parent" android:layout_height="wrap_content" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="middleName"/> <EditText android:id="@+id/editmname" android:layout_width="match_parent" android:layout_height="wrap_content" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="lastName"/> <EditText android:id="@+id/editlname" android:layout_width="match_parent" android:layout_height="wrap_content" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="nickName"/> <EditText android:id="@+id/editnname" android:layout_width="match_parent" android:layout_height="wrap_content" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="dob"/> <EditText android:id="@+id/editdob" android:layout_width="match_parent" android:layout_height="wrap_content" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="status"/> <EditText android:id="@+id/editstatus" android:layout_width="match_parent" android:layout_height="wrap_content" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="homeAddress"/> <EditText android:id="@+id/edithomeAddr" android:layout_width="match_parent" android:layout_height="wrap_content" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="workAddress"/> <EditText android:id="@+id/editworkAddr" android:layout_width="match_parent" android:layout_height="wrap_content" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="income"/> <EditText android:id="@+id/editincome" android:layout_width="match_parent" android:layout_height="wrap_content" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Update Preferences" android:id="@+id/button" android:layout_gravity="center_horizontal" /> </LinearLayout>,然后它就像魅力一样工作!!!

谢谢和问候 Praveen Kumar